<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;
}
两个栈实现队列Push和Pop操作
最新推荐文章于 2023-05-24 22:07:03 发布