C语言实现堆的基本操作

本文介绍了如何使用C语言实现最大堆,包括创建堆、判断堆满/空、插入元素和删除元素等基本操作。虽然C++的STL库提供了堆数据结构,但在某些场景下,自定义堆更为实用。
摘要由CSDN通过智能技术生成


前言

本文用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;//堆的最大容量 
};

 

二、创建最大堆

//创建最大堆
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;
}

 

三、判断堆满/空

//判断堆栈是否满 
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;
} 

 

四、插入操作

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

//插入元素
void Insert(MaxHeap H,DataType item
  • 1
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值