您当前的位置: 首页 > 

染指流年灬

暂无认证

  • 3浏览

    0关注

    194博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

用队列实现栈

染指流年灬 发布时间:2022-07-14 13:17:43 ,浏览量:3

之前面试一直不刷题,因为感觉工作中用不到,为了卷而卷,这是有点知名度的力扣面试题,学撤销重做的时候想起,之前的面试中被问过两三次了,紧张了,几分钟都构思不到, 有点兴趣还是记录一下。

队列实现栈 题目

使用队列实现栈的下列操作:

push(x) – 元素 x 入栈 pop() – 移除栈顶元素 top() – 获取栈顶元素 empty() – 返回栈是否为空

思路

我们用两个队列A、B来模拟栈,这里将A看作是栈,B看作是实现栈操作所需的临时队列。

  1. 入栈:直接将元素添加进队列

  2. 出栈:将A队列中队尾元素以外的都挪到B队列中,使得栈顶元素能够被取出。然后再将A的末尾元素"出栈"。 然后,将AB的引用交换, 这样A更新之后的内容看起来就像出栈。

在这里插入图片描述

  1. 返回栈顶元素:和出栈同理,只是在返回A的末尾元素后, A的末尾元素也得进入B队列。

  2. 判断栈是否为空:如果AB同时为空,则为空栈。

栈实现队列

用栈来实现队列需要使用两个栈:一个栈用于入列操作,另一个栈用于出列操作。具体实现如下:

入列操作:将元素压入栈1中。

出列操作:如果栈2不为空,则弹出栈顶元素;如果栈2为空,则将栈1中的元素逐个弹出并压入栈2中,然后弹出栈2的栈顶元素。

判断队列是否为空:当栈1和栈2都为空时,队列为空。

因为保证出栈的顺序与入栈相同就行了,而将一个栈的元素挨个移动到另个栈,然后另个栈出栈的顺序就能保证与第一个栈的入栈顺序相同了。

关注
打赏
1665909078
查看更多评论
立即登录/注册

微信扫码登录

0.0419s