0
点赞
收藏
分享

微信扫一扫

用队列实现栈

何晓杰Dev 2022-01-24 阅读 83

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

  • push(x) :元素 x 入栈

  • pop() :移除栈顶元素

  • top() : 获取栈顶元素

  • empty() :返回栈是否为空

用两个队列que1和que2实现栈的功能,que2其实完全就是一个备份的作用,把que1最后面的元素以外的元素都备份到que2,然后弹出最后面的元素,再把其他元素从que2导回que1。

1.入栈时,直接将元素入队。

2.出栈时,先将que1最后元素以外的元素都移入que2中,弹出que1最后的元素,再将que2中的元素导入que1中。

3.栈顶元素为que1.back()。

4.栈是否为空直接判断队列1是否为空即可。

实现代码如下:

//用队列实现栈
queue<int> q1;
queue<int> q2;

MyStack() {}

//元素x入栈
void push(int x) {
q1.push(x);
}

//移除栈顶元素,并返回
int pop() {
int size = q1.size();
while(size > 1) {
int i = q1.front();
q2.push(i);
q1.pop();
size--;
}
int r = q1.front();
q1.pop();
while(!q2.empty()) {
int j = q2.front();
q1.push(j);
q2.pop();
}
return r;
}

//返回栈顶元素
int top() {
return q1.back();
}

//判断是否为空
bool empty() {
return q1.empty();
}
举报

相关推荐

0 条评论