当前位置:   article > 正文

C语言实现堆的基本操作_堆操作 c

堆操作 c


前言

本文用C语言实现了堆的基本操作,包括:创建堆、判断堆满/空、插入、删除。虽然在C++的STL中已经分装好了堆数据结构,但是在不少的场合会用到自己写的堆。
用C++更加方便:C++使用堆!


 

基本的操作

堆分为最大堆和最小堆,本文对最大堆进行了说明,最小堆可模仿写出。

 

一、头文件及定义堆

代码:

#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;//堆的最大容量 
};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

 

二、创建最大堆

//创建最大堆
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;
}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

 

三、判断堆满/空

//判断堆栈是否满 
int IsFull(MaxHeap H){
   
	if(H->size==H->capacity)return 1;
	return 0;
}

//判断堆栈是否为空
int IsEmpty(MaxHeap H){
   
	if(H->size==0)return 1;
	return 0;
} 
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

 

四、插入操作

数组中 i/2 的位置是父结点的位置,如果比父结点大,就向前移动

//插入元素
void Insert(MaxHeap H,DataType item
  • 1
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/不正经/article/detail/688383
推荐阅读
相关标签
  

闽ICP备14008679号