1.2 用两个队列实现一个栈

来源:互联网 发布:oracle认证 java 编辑:程序博客网 时间:2024/06/10 09:07

a是专职进出栈的,b只是个中转站。元素集中存放在一个栈中,但不是指定(a 或 b)。

#include <iostream>#include <queue>using namespace std;//入栈操作void pushQueue(queue<int> &a, queue<int> &b, int num){    if(!a.empty())      //若队列a不为空        a.push(num);    else        b.push(num);}//出栈操作void popQueue(queue<int> &a, queue<int> &b){    //若队列a不为空,则将a中元素依次入队到b中    //保留a中最后一个元素出队列,即出栈    if(!a.empty())    {        while(a.size()>1)        {            b.push(a.front());            a.pop();        }        cout<<a.front()<<endl;        a.pop();    }    //若队列b不为空,则将b中元素依次入队到a中    //保留b中最后一个元素出队列,即出栈    if(!b.empty())    {        while(b.size()>1)        {            a.push(b.front());            b.pop();        }        cout<<b.front()<<endl;        b.pop();    }}int main(){    queue<int> a, b;    pushQueue(a, b, 1);    pushQueue(a, b, 2);    pushQueue(a, b, 3);    pushQueue(a, b, 4);    popQueue(a, b);    popQueue(a, b);    popQueue(a, b);    popQueue(a, b);    return 0;}
0 0
原创粉丝点击