两个栈实现一个队列 C++,简单版本
#include<iostream>
#include<stack>
using namespace std;
struct queue{
stack<int> s1;
stack<int> s2;
void push_queue(int val);
void pop_queue();
bool empty();
int back();
};
void queue::push_queue(int val){
s1.push(val);
}
void queue::pop_queue(){
if(s2.empty()){
while(!s1.empty()){
s2.push(s1.top());
s1.pop();
}
}
s2.pop();
}
bool queue::empty(){
return s1.empty()&&s2.empty();
}
int queue::back(){
if(s2.empty()){
while(!s1.empty()){
s2.push(s1.top());
s1.pop();
}
}
return s2.top();
}
int main()
{
queue q;
int in;
cout<<"入队1,出队2,查看 3"<<endl;
while(cin>>in){
switch(in){
case 1:
cout<<"入队:";
cin>>in;
q.push_queue(in);
cout<<"入队元素:"<<in<<endl;
break;
case 2:
cout<<"出队元素:";
cout<<q.back()<<endl;
q.pop_queue();
break;
case 3:
cout<<"队列元素分别是:"<<endl;
while(!q.empty()){
cout<<q.back()<<endl;
q.pop_queue();
}
}
cout<<"入队1,出队2,查看 3"<<endl;
}
}