- 堆的操作,摘自C语言实现最大堆最小堆的建立以及堆排序
#include<stdio.h> #include<stdlib.h> #define N 10005 typedef int ElementType; typedef struct HNode *Heap; /* 堆的类型定义 */ struct HNode { ElementType *Data; /* 存储元素的数组 */ int Size; /* 堆中当前元素个数 */ int Capacity; /* 堆的最大容量 */ }; typedef Heap MaxHeap; /* 最大堆 */ typedef Heap MinHeap; /* 最小堆 */ #define MAXDATA 1000 /* 该值应根据具体情况定义为大于堆中所有可能元素的值 */ #define MINDATA -1000 /* 创建容量为MaxSize的空的最小堆 */ MinHeap CreateMinHeap(int 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] = MINDATA; /* 定义"哨兵"为大于堆中所有可能元素的值*/ return H; } bool IsFull(MinHeap H) { return (H->Size == H->Capacity); } /* 将元素X插入最小堆H,其中H->Data[0]已经定义为哨兵 */ bool Insert(MinHeap H, ElementType X) { int i; if (IsFull(H)) { printf("最小堆已满"); return false; } i =
数据结构_树(3)
本文介绍了哈夫曼树的定义、特点及其构造过程,包括如何通过代码实现哈夫曼编码。此外,还探讨了集合运算是如何进行的,如集合表示方法、查找元素和集合的并运算。
摘要由CSDN通过智能技术生成