C 堆 通用构建方法 复习

本文复习了C语言中构建堆的方法,包括堆结点的类型定义、建堆操作、插入和删除操作。在建堆过程中,初始化堆结点,使用哨兵来区分最大堆和最小堆。插入操作通过与父节点比较进行上浮,删除操作则涉及到元素的替换和下沉。堆的维护关键在于正确执行下沉和上浮策略。
摘要由CSDN通过智能技术生成


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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值