在C中实现最小堆

时间:2016-05-21 18:26:23

标签: c algorithm sorting data-structures heap

我正在尝试在C中实现最小堆,但我正在努力使用筛选功能。

到目前为止我所拥有的是:

    ######### #####
    #    .# #     #
    # ###.# ##### #
    # #...#       #
    #  .######### #
    ###.#         #
    # #.# #########
    #...  #       #
    #.##### ##### #
    #.....#       #
    #####.#########

我对三元条件感到抱歉,我知道大多数人不喜欢他们,但这是针对学校的,他们强迫我们使用三元。

这是目前的segfaulting,我不知道为什么。我试过valgrind,但它并没有真正帮助... 如果有人有一个非常好的想法。

1 个答案:

答案 0 :(得分:0)

我刚刚更换了

    if (!h->nodes[cur * 2] && !h->nodes[cur * 2 + 1])
      return ;

通过

    if (cur * 2 > h->size)
       return;

一切正常。