栈:先进后出
队列:先进先出
1:两个队列实现栈:
队列A
队列B
入栈:入队列A, 1,2,3,4 入栈,在队列A里为 A: 1,2,3,4
出栈,将队列A中的元素入队列B直到队列A里的元素只剩下一个,则队A为4,队B为1,2,3,A:4,B:1,2,3,输出A队头4
#include2:两个栈实现队列#include using namespace std;queue A,B;void PushStack(int value)//向非空的那个队列入队{ if (!A.empty()==true&&B.empty()==true) { A.push(value); } else if (!B.empty()==true&&A.empty()==true) { B.push(value); } else //A B均为空 { A.push(value); }}int PopStack()//由非空的队列向空队列入队,知道剩下最后一个元素{ int m = 0; if (!A.empty()==true&&B.empty()==true) { while(A.size()!=1) { B.push(A.front()); A.pop(); } m = A.front(); A.pop(); return m; } else if (!B.empty()==true&&A.empty()==true) { while(B.size()!=1) { A.push(B.front()); B.pop(); } m = B.front(); B.pop(); return m; } return 0;}int main(){ for (int i = 1; i < 5; i++) { PushStack(i); } cout< <
A:入栈队
B:出栈队
由于栈为先进后出,两个栈正好满足先进先出
入队:
入栈A,A:1,2,3,4
出队:将栈A的元素入栈B,直到为空,B:4,3,2,1;出栈1
#include#include using namespace std;stack A,B;void PushQueue(int value){ A.push(value);}int PopQueue(){ int m; while (!A.empty()) { B.push(A.top()); A.pop(); } if (!B.empty()) { m = B.top(); B.pop(); } else m = 0; while(!B.empty()) { A.push(B.top()); B.pop(); } return m;}int main(){ int m ; for (int i = 1; i < 6; i++) { PushQueue(i); } for (int i = 1; i < 4; i++) { int m1 = PopQueue(); cout< <