堆的创建
本文介绍创建最大堆,最小堆可模仿创建
堆的创建有两种方式:
1.一个一个元素插入,插入一个就调整为堆
2.给定一定数目的元素,然后整体调整为堆
一、定义堆及初始化堆
不管是哪种方式,我们都要先初始化好堆
#include <stdio.h>
#include <stdlib.h>
#define MaxData INT_MAX;
typedef int DataType;
typedef struct HeapStruct *MaxHeap;
struct HeapStruct{
DataType *data;
int size;//堆当前元素个数
int capacity;//堆的最大容量
};
//初始化最大堆
MaxHeap Creat(int MaxSize){
MaxHeap H=malloc(sizeof(struct HeapStruct));
//第一个不作为堆的元素
H->data=malloc((MaxSize+1)*sizeof(DataType));
H->size=0;
H->capacity=MaxSize;
//第一个元素作为标记元素
H->data[0]=MaxData;
return H;
}
二、插入法创建堆
核心代码如下:
//插入元素
void Insert(MaxHeap H,DataType item){
int i;
if(IsFull(H)){
printf("最大堆已满!");