两个栈实现的队列
版权声明 本站原创文章 由 萌叔 发表
转载请注明 萌叔 | https://vearne.cc
#include <iostream>
#include <stack>
using namespace std;
template<typename T>
class MyQueue{
public:
MyQueue(){}
~MyQueue(){}
void push(T& a);
T& front();
void pop();
int size(){
return st1.size()+st2.size();
}
bool empty(){
return size()==0;
}
private:
stack<T> st1;
stack<T> st2;
};
template<typename T>
void MyQueue<T>::push(T& a){
st1.push(a);
}
template<typename T>
T& MyQueue<T>::front(){
if(st2.empty()){
while(!st1.empty()){
st2.push(st1.top());
st1.pop();
}
}
return st2.top();
}
template<typename T>
void MyQueue<T>::pop(){
front();
st2.pop();
}
int main(){
MyQueue<int> q;
int a=1;
int b=2;
int c=3;
q.push(a);
q.push(b);
//cout<<q.size()<<endl;
cout<<q.front()<<endl;
q.push(c);
while(!q.empty()){
cout<<q.front()<<endl;
q.pop();
}
//cout<<q.front()<<endl;
}
后记
这是我2012年的文章,从别的博客迁移进来