两个栈实现队列Push和Pop操作

来源:互联网 发布:主人网络跟访客网络 编辑:程序博客网 时间:2024/06/05 20:26
<pre name="code" class="cpp">#include<iostream>#include<string.h>#include<stack>using namespace std;template<class T>class CQueue{public:CQueue(void){};~CQueue(void){};void Push(T k);T Pop();private:stack<T>stack1;stack<T>stack2;};template<class T>void CQueue<T>::Push(T k){stack1.push(k);}template<class T>T CQueue<T>::Pop(){if(stack2.size()<=0){while(stack1.size()>0){T tmp=stack1.top();stack1.pop();stack2.push(tmp);}}if(stack2.size()<=0)return -1;else{T head=stack2.top();stack2.pop();return head;}}int main(){CQueue<int> myQueue;int n;char str[10];int num;cin>>n;while(n>0){memset(str,0,10);cin>>str;//cout<<str<<" "<<num<<endl;if(strcmp(str,"PUSH")==0){cin>>num;myQueue.Push(num);}else if(strcmp(str,"POP")==0){cout<<myQueue.Pop()<<endl;}n--;}return 1;}


0 0
原创粉丝点击