当前位置:   article > 正文

232用栈实现队列(力扣)_232 用栈实现队列

232 用栈实现队列

题目内容

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

push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空
  • 1
  • 2
  • 3
  • 4

示例

MyQueue queue = new MyQueue();

queue.push(1);
queue.push(2);
queue.peek(); // 返回 1
queue.pop(); // 返回 1
queue.empty(); // 返回 false

题目分析

这种题可以采用双栈的方式完成。分别命名为inStack,用于存储该队列的元素(顺序栈),outStack用于还原元素在队列中的位置(逆序栈)。
所以对于队列中各函数的实现:
void cheak():首先判断outStack是否为空,若不为空直接弹出该栈栈顶元素,若为空,先把inStack所有元素逐一弹出,push到outStack,最后弹出outStack的栈顶元素,这样即可实现逆向存储
void push(x)(入队):直接将队列元素存入inStack中。若存入队列的元素为1,2,3,所以在inStack中的元素为3,2,1(3在最前面),outStack为空。
int pop()(删除首部元素并返回该值):首先进行cheak()操作,得到outStack中的元素为1,2,3(1在最前面),inStack由于pop后目前为空。随后将outStack的首元素取出来作为队列中的首元素,并将其删除。此时返回1,outStack中的元素为2,3。
int peak()(返回队列首部元素):同样先进行cheak()操作,随后直接返回outStack首部元素即可。
bool empty()(判空):此时需要判断inStack和outStack均为空才可以。原理很简单,一个队列的元素若判断它里面为空,

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/菜鸟追梦旅行/article/detail/671755
推荐阅读
相关标签
  

闽ICP备14008679号