有一个调整函数。Intoout,
/*Implement a MyQueue class which implements a queue using two stacks
*/
#include <iostream>
using namespace std;
class Node{
public:
int data;
Node* next;
Node(){this->next = 0;}
Node(int a, Node* n=0):data(a),next(n){}
};
class Stack{
public:
Node* top;
Stack():top(0){ }
~Stack();
int pop();
void push(int);
void print()const{
Node* p = top;
while(p)
{
cout<<p->data<<" ";
p = p->next;
}
}
};
Stack::~Stack(){
while(top){
this->pop();
}
}
int Stack::pop(){
if(!top) return 0;
Node* p = top;
top = top->next;
int k = p->data;
delete p;
return k;
}
void Stack::push(int k){
Node* p = top;
top = new Node(k,p);
}
class Queue{
Stack qin,qout;
public:
Node* top;
void push(int k){ qin.push(k);}
int pop(){
if(!qout.top){
Intoout();
}
if(qout.top)return qout.pop();
return 0;
}
void Intoout(){
while( qin.top != 0)
qout.push(qin.pop());
}
};
int main(){
int ar[]={16,423,5,67,8,9,45,78,777,33,12,11,76,4,43,7};
Queue ll;
for(int i = 0; i<16; i++)
ll.push(ar[i]);
for(int i = 0; i < 5; i++)
ll.push(i);
for(int i = 0; i < 21; i++)
cout<<ll.pop()<<endl;
}