最大堆的操作
- 最大堆的创建
typedef struct HeapStruct* MaxHeap;
struct HeapStruct
{
ElementType *Elements; // 存储堆元素的数组
int Size; // 堆的当前元素个数
int Capacity; // 堆的最大容量
};
MaxHeap Create(int MaxSize)
{
MaxHeap H= malloc(sizeof(struct HeapStruct));
H->Elements = malloc((MaxSize+1)*sizeof(ElementType));
H->Size=0;
H->Capacity=MaxSize;
H->Elements[0]=MaxData; // 哨兵,大于堆中所有可能元素的值
return H;
}
- 最大堆的插入
void Insert(MaxHeap H,ElementType item)
{
int i;
if (IsFull(H))
{
printf("Full Heap");
return;
}
i=++H->Size;
for (;H->Elements[i/2]<item;i/=2)
{
H->Elements[i]=H->Elements[i/2];
}
H->Elements[i]=item;
}