数据结构之堆的实现

首先我们要想堆应该用什么实现,我们这里可以使用数组,因为每一层的数是有限个的,所以我们可以很容易将数的每一个位置对应到数组中去。

那我们就可以仿照顺序表写出我们的结构。

然后我们要考虑我们要实现哪些函数。

最基本的功能初始化和销毁,不再赘述。

然后我们实现打印

然后我们实现经典的功能入堆。

重点保证空间足够。然后我们通过Adjustup去维护大,小根堆的堆放。(此处实现的是大根堆)

将其与父节点比较,然后进行移动,直至合适位置。

然后我们实现判断是否为空和显示堆顶元素。

然后就是本贴的最后的功能,出堆。

将最后一个元素移动到堆顶,然后再进行下放,维护大根堆。

综上就是全部内容。

相关推荐
来一碗刘肉面24 分钟前
图的基本操作
数据结构
Mem0rin2 小时前
前缀和:一维与二维
数据结构·算法
鱼子星_2 小时前
【C++】stack和queue的应用及其模拟实现:适配器与容器适配器
数据结构·c++·笔记·stl
白狐_7983 小时前
408数据结构第6章:图——核心考点、算法对比与AOE网真题
数据结构·算法
白狐_7984 小时前
408数据结构第6章:迪杰斯特拉(Dijkstra)算法——真题精讲
数据结构·算法
皓月斯语4 小时前
P2858 [USACO06FEB] Treats for the Cows G/S
数据结构·c++·算法·动态规划
白白白小纯4 小时前
树和二叉树(1)
数据结构
旖旎夜光4 小时前
LeetCode 397:整数替换(贪心问题) —— 题解
数据结构·c++·算法·leetcode·贪心算法
bbq粉刷匠5 小时前
ArrayList 整体认识
java·jvm·数据结构
wabs6665 小时前
关于哈希表【力扣1.两数之和的思考】
数据结构·算法·leetcode·散列表·图论