1.什么是堆?


2.堆的抽象数据类型描述

3.堆的C语言实现

#include<stdio.h>
#include<stdlib.h>#define ElementType int
#define MaxData 100
typedef struct HeapStruct *MaxHeap;
struct HeapStruct{ElementType *Elements;int Size;int Capacity;
};//1.初始化
MaxHeap Create(int MaxSize)
{MaxHeap H;H=(MaxHeap)malloc(sizeof(struct HeapStruct));H->Elements=malloc((MaxSize+1)*sizeof(ElementType));H->Size=0;H->Capacity=MaxSize;H->Elements[0]=MaxData;return H;
}//2.判断堆是否满
int IsFull(MaxHeap H)
{return H->Size==H->Capacity;
}//3.插入
void Insert(ElementType item,MaxHeap H)
{int i;if(IsFull(H)){printf("堆已满\n");return;}i=++H->Size;for(;H->Elements[i/2]<item;i/=2){H->Elements[i]=H->Elements[i/2];}H->Elements[i]=item;
}//4.判断堆是否为空
int IsEmpty(MaxHeap H)
{return H->Size==0;
}//5.删除最大值
ElementType DeleteMax(MaxHeap H)
{int Parent,Child;ElementType MaxItem,temp;if(IsEmpty(H)){printf("堆为空,无法删除\n");return;}MaxItem=H->Elements[1];temp=H->Elements[H->Size--];for(Parent=1;Parent*2<=H->Size;Parent=Child){Child=Parent*2;if(Child!=H->Size&&(H->Elements[Child]<H->Elements[Child+1])){Child++;}if(temp>=H->Elements[Child]){break;}else{H->Elements[Parent]=H->Elements[Child];}}H->Elements[Parent]=temp;return MaxItem;
}int main()
{int i;MaxHeap H;H=Create(10);Insert(32,H);Insert(18,H);Insert(21,H);Insert(12,H);Insert(15,H);for(i=0;i<=H->Size;i++){printf("%d  ",H->Elements[i]);}printf("\n");Insert(45,H);for(i=0;i<=H->Size;i++){printf("%d  ",H->Elements[i]);}printf("\n");int DMax;DMax=DeleteMax(H);for(i=0;i<=H->Size;i++){printf("%d  ",H->Elements[i]);}printf("\n");return 0;
}

数据结构——堆的C语言实现相关推荐

  1. 数据结构——队列的C语言代码实现

    系列文章目录 数据结构--顺序表的C语言代码实现 数据结构--八种链表的C语言代码实现 数据结构--栈的C语言代码实现 数据结构--队列的C语言代码实现 数据结构--堆的C语言代码实现 文章目录 系列 ...

  2. java堆 数据结构 堆_Java中的紧凑堆外结构/组合

    java堆 数据结构 堆 在上一篇文章中,我详细介绍了代码对主内存的访问方式的含义. 从那时起,我就在Java中可以做什么以实现更可预测的内存布局提出了很多疑问. 有些模式可以使用数组支持的结构来应用 ...

  3. 《数据结构与算法 Python语言描述》 读书笔记

    已经发布博客 <数据结构与算法 Python语言描述> 读书笔记 第二章 抽象数据类型和Python类 2.1 抽象数据类型abstract data type:ADT 2.1.1 使用编 ...

  4. 《数据结构与算法 Python语言实现》书评与学习心得

    做为Python小白,本人几个月前读完了Mark Lutz的1400页巨著<Learning Python>(太TM啰嗦了,读过的请举手),本打算继续学习下一步<Programmin ...

  5. s数据结构替换子表java版_数据结构与算法分析Java语言描述(第3版) PDF和源码免费 下载...

    <数据结构与算法分析Java语言描述(第3版)>PDF和源码免费 下载 免积分下载 用户下载说明: 图书简介: 数据结构:Java语言描述(原书第3版)是国外数据结构与算法分析方面的经典教 ...

  6. 《数据结构与算法 C语言版》—— 3.8习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第3章,第3.8节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 3.8习题 1名 ...

  7. 《数据结构与算法 C语言版》—— 2.5上机实验

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.5节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.5上机实验 实 ...

  8. 《数据结构与算法 C语言版》—— 2.7习题

    本节书摘来自华章出版社<数据结构与算法 C语言版>一 书中的第2章,第2.7节,作者:徐凤生,更多章节内容可以访问云栖社区"华章计算机"公众号查看. 2.7习题 1描 ...

  9. 堆的C语言实现——堆与堆排序(二)

    堆的C语言实现--堆与堆排序(二) 堆的C语言实现--堆与堆排序(二) 头文件 初始化函数 下滤函数1(递归) 堆构造函数1(自底向上,递归) 下滤函数2(非递归,交换法) 下滤函数3(非递归,空穴法 ...

最新文章

  1. Python 如何查看内存地址
  2. 是否存在两台 MacOS 之间无缝切换的办法?
  3. git常用命令速查表【转】
  4. shell脚本输出带颜色字体
  5. stream获取filter
  6. 用MS SQL Server事件探查器来跟踪数据库的操作
  7. 今天学到的几个函数【二】
  8. 使用Git初始化项目时操作
  9. python有几种容器_Python中几种内置的容器(Containers)类型:列表、字典、集合和元组的比较和该注意的点...
  10. vue如何保存登录状态到全局?【vue状态管理】
  11. Unity 工具之 UniWebView 内嵌网页/浏览器到应用中,并且根据UGUI大小放置(简单适配UGUI)
  12. CentOS7网卡驱动安装过程
  13. ZipEntry的使用
  14. python下opencv安装
  15. 什么是Power BI?
  16. java画图消除锯齿_java – JButton文本的消除锯齿
  17. 如何判断Hadoop集群是否搭建成功
  18. Bulldog靶机渗透
  19. java中设置基偶隔行换色_Excel2016中奇偶行填充不同颜色的方法
  20. 不填写内容用哪个斜杠代替_【几月几日怎么写斜杠】作文写作问答 - 归教作文网...

热门文章

  1. LeetCode 1664. 生成平衡数组的方案数(前缀和+后缀和)
  2. LeetCode 1548. The Most Similar Path in a Graph(动态规划)
  3. LeetCode MySQL 626. 换座位
  4. LeetCode 1026. 节点与其祖先之间的最大差值(二叉树DFS)
  5. java对象内存模型_Java对象的内存模型
  6. insert和update 锁等待_黑龙F5智感双全智能锁全球首发,掀起惊艳风潮
  7. java mysql geo_GEO数据库简介
  8. 10.数据库中的内置函数
  9. 数据分析-书籍整理(二)
  10. java sax解析xml_【转】java使用sax解析xml文件