其他分享
首页 > 其他分享> > 用队列实现栈

用队列实现栈

作者:互联网

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

用两个队列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();
}

标签:q1,队列,元素,pop,que1,实现,int,que2
来源: https://blog.csdn.net/qq_43697646/article/details/122673287