堆
1.堆结点的类型定义
堆的当前元素个数
堆的最大容量
存储元素的数组
typedef struct HNode *Heap; /* 堆的类型定义 */
struct HNode {
ElementType *Data; /* 存储元素的数组 */
int Size; /* 堆中当前元素个数 */
int Capacity; /* 堆的最大容量 */
};
typedef Heap MaxHeap; /* 最大堆 */
typedef Heap MinHeap; /* 最小堆 */
分为最大堆和最小堆;
2.建堆操作
初始化堆结点的成员变量;
构造data空间——大小为maxsize+1,下标0处存放哨兵
size为0,空堆;
capacity为传入值;
定义哨兵——最大堆哨兵为INFIINITY;最小堆哨兵为最小值;
#define MAXDATA 1000 /* 该值应根据具体情况定义为大于堆中所有可能元素的值 */
MaxHeap CreateHeap( int MaxSize )
{
/* 创建容量为MaxSize的空的最大堆 */
MaxHeap H = (MaxHeap)malloc(sizeof(struct HNode));
H->Data = (ElementType *)malloc((MaxSize+1)*sizeof(ElementType));
H->Size = 0;
H->Capacity = MaxSize;
H->Data[0] = MAXDATA; /* 定义"哨兵"为大于堆中所有可能元素的值*/
return