10.1-7 两个队列实现一个栈

来源:互联网 发布:矩阵化为行最简形 编辑:程序博客网 时间:2024/05/17 07:38
/*两个队列实现一个栈设两个队列为q1,q2入栈、出栈操作完成后,都会至少有一个队列为空。入栈:元素入队到非空队列(若q1,q2都空,入任意一队)出队:非空队列Q的元素出队,入队到空队列eQ。当非空队列Q剩下一个元素时,直接出队。此时,原来的空队列eQ变成非空队列Q,原来的非空队列Q变成空队列eQ。*/#include<cstdio>#include<queue>using namespace std;typedef char ElemType;queue <ElemType> q1;queue <ElemType> q2;void popout(queue Q,queue eQ)//非空队列Q,空队列eQ{//Q一定非空    int size=Q.size();size--;    while(size--){        eQ.push(Q.front());Q.pop();    }    putchar(Q.front());Q.pop();}void push(ElemType elem)//O(1){    if(q1.empty()) q2.push(elem);    else q1.push(elem);}void pop()//O(n){    if(q1.empty()){        if(q2.empty()) puts("stack underflow!");        else popout(q2,q1);//q1空,q2非空    }else        popout(q1,q2);//q1非空,q2空}int main(void){    pop();    return 0;}

0 0