1.栈和队列

1. 如何用两个栈实现一个队列?

栈的特点:先进后出,进出元素都是在同一端(栈顶)。

入栈:

出栈:

队列

队列的特点:先进先出,出入元素在不同的两端(队头和队尾)。

入队:

出队:

 两个栈实现一个队列

两个栈,一个栈作为队列的入口,负责插入新元素;另一个栈作为队列的出口,负责移除老的元素。

 队列的主要操作有两个:入队和出队。在模拟入队时,新元素都被压入栈A中。

元素“1”入队:

 元素“2”入队:

 元素“3”入队:

 元素“入队”完毕,如何让元素“出队”?

答:将栈A当中的元素按顺序出栈,再按顺序压入栈B。再从栈B当中让元素按顺序出栈。

 让元素1“出队”,即将1从栈B弹出。

 元素“2”出队

 若此时有元素4想入队:

 元素“3”出队:

 元素“4”出队,需要分为两步走:

1.将元素“4”压入栈B

 2.将元素“4”弹出栈B,实现出队:

 2. 两个队列实现一个栈:

因为栈的性质是“后进先出”,所以需要用两个队列的元素“互捣”,从而实现栈的这一特性。

stack是栈,q1和q2是两个队列。

图(1):将元素1、2、3、4尾插入q1。

图(2):将元素1、2、3从q1头删,然后尾插进入q2,此时在q1中剩下元素4,此时再头删元素4,就相当于实现了栈顶元素的出栈。

图(3):将元素1、2从q2头删,然后尾插进入q1,此时q2中还剩下元素3,此时再头删元素3,也相当于栈顶元素的出栈。

...中间也有出栈的操作,此处忽略。

图(4):如果此时有元素5想入栈,让元素5尾插进入q1,待在元素1的后面。实现了入栈的操作。

图(5): 将元素1头删,尾插进入q2,将元素5从q1中头删,实现出栈操作。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

返京列车。

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值