用队列实现栈

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

  • 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();
}
上一篇:集合的应用


下一篇:Python字典的“pop()弹出”方法(按键取值并删除键值对)