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("最大堆已满");
return;
}
i = ++H->Size;
for (; H->Elements[i / 2] < item; i /= 2)
H->Elements[i] = H->Elements[i / 2];
H->Elements[i] = item;
}
//最大堆的删除
ElementType DeleteMax(MaxHeap H)
{
int Parent, Child;
ElementType MaxItem, temp;
if (IsEmpty(H))
{
printf("最大堆已为空");
return;
}
MaxItem = H->Elements[1];
temp = H->Elements[H->Size--];
for (Parent = 1; Parent * 2 <= H->Size; Parent = Child)
{
Child = Parent * 2;
if ((Chlid != H->Size) && (H->Elements[Child] < H->Elements[Child + 1))
Chlid++;
if (temp >= H->Elements[Child]) break;
else
H->Elements[Parent] = H->Elements[Child];
}
H->Elements[Parent] = temp;
return MaxItem;
}
堆
最新推荐文章于 2025-05-27 20:00:36 发布