注意还是要读题 要具体理解数据结构具体类型 注意看清楚调用的格式是指针(->)还是结构(.) 不然报错会很奇怪 还在那认为是算法的问题 结果是自己的调用出了问题
#include <stdio.h>
#include <stdlib.h>
#include "minbinheap.h"
void init_min_heap(PMinHeap pq, int capacity){
pq->capacity=capacity;
pq->heap_array=(PMinHeapNode)malloc(sizeof(MinHeapNode) *(pq->capacity));
pq->heap_size=0;
}
这里是对heap_array这个(指针)数组进行空间开辟 然后要注意* 打括号?不然会不会导致变成指针?
堆初始化
二叉堆一般用数组来表示。例如,根节点在数组中的位置是0,第n个位置的子节点分别在2n+1和 2n+2。 因此,第0个位置的子节点在1和2,1的子节点在3和4。以此类推。这种存储方式便于寻找父节点和子节点。在二叉堆上可以进行插入节点、删除节点、取出值最小的节点、减小节点的值等基本操作。
“最小堆”的定义如下: