C++ 数据结构-堆

本文介绍了如何使用C++ STL中的优先队列实现堆,并通过一个合并果子的问题展示了堆的运用。文章详细解释了堆的性质,包括小根堆和大根堆的定义,以及put()和get()函数的工作原理。最后,作者提供了2018年重构的小根堆代码示例。
摘要由CSDN通过智能技术生成

堆--一种可被视为完全二叉树的结构,实现有多种方法





(一)  C++ STL - 优先队列实现

1.首先写好队列头文件

#include<queue>


2.定义一个int型、值小的数优先级高(先出队列)的队列-----小根堆

*最后的'<int>' 与‘>’间注意留空格

priority_queue<int, vector<int>, greater<int> > a;
大根堆的定义:
priority_queue<int, vector<int> > a;
//priority_queue<int, vector<int>, less<int> > a;


3.操作:

往堆中加一个元素:

a.push(x);
弹出堆顶元素:

a.pop();
访问堆顶元素:

a.top();
堆的大小:a.size()

判断堆是否为空:a.empty();


4.一个经典的栗子:合并果子

题目描述

在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值