#include <iostream>
#include <assert.h>
#include <stack>
using namespace std;
template <typename T>
class MyQueue{
public:
MyQueue(){};
T dequeue();
void enqueue(T);
bool empty();
private:
stack<T> pushStack;
stack<T> popStack;
};
template <typename T>
T MyQueue<T>::dequeue(){
T result;
if(!popStack.empty()){
result=popStack.top();
popStack.pop();
}else{
if(pushStack.empty()){
cout<<"empty"<<endl;
return 0;
}
while(!pushStack.empty()){
popStack.push(pushStack.top());
pushStack.pop();
}
result=popStack.top();
popStack.pop();
}
return result;
}
template <typename T>
void MyQueue<T>::enqueue(T value){
pushStack.push(value);
}
template<typename T>
bool MyQueue<T>::empty(){
return pushStack.empty()&&popStack.empty()?true:false;
}
void main(){
MyQueue<string> queue;
queue.enqueue("one");
queue.enqueue("two");
cout<<queue.empty()<<endl;
string str=queue.dequeue();
cout<<str.c_str()<<endl;
str=queue.dequeue();
cout<<str.c_str()<<endl;
cout<<queue.empty()<<endl;
system("pause");
}
用两个栈实现队列
最新推荐文章于 2021-03-02 01:18:39 发布