算法经典题一(栈,队列,堆)

算法经典题一(栈,队列,堆)

一.预备知识:栈,队列,堆

栈 stack:先进后出的线性表
相关方法操作:
1.判断是否为空S.empty()
2.进栈S.push()
3.出栈S.pop()
4.返回栈顶元素S.top()
5.存储元素个数S.size()

队列 queue:先进先出的线性表
相关方法操作:
1.判断队列是否为空Q.empty()
2.进队Q.push()
3.出队Q.pop()
4.返回队首元素Q.front()
5.返回队尾元素Q.back()
6.存储元素个数Q.size()

堆 二叉堆属性
最(大)小二叉堆,最(大)小值先出的完全二叉树(线性表存储的,第一个元素即为最大值)

说明:即父结点相对于两个子结点,是最小或最大的,那么根节点就是最小或最大的。

相关操作(最大堆):
1.判断堆是否为空big_heap.empty()
2.弹出堆顶元素big_heap.pop(),即最大值
3.将元素添加进堆big_heap.push()
4.返回堆顶元素big_heap.top(),即最大值
5.返回堆中个数big_heap.size()

二.应用示例:

例1.使用队列实现栈

描述:只能使用队列来实现栈

分析:使用临时队列将每次push进来的元素调换位置,将元素添加至队首,重点修改push()方法

操作:
1.将新元素push进入临时队列,那么新元素就会进入队首
2.将原队列元素push进临时队列,原有的元素依次在新元素后面,就实现了栈的元素排列和添加结构
3.将临时队列push进入原队列

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值