两个栈实现一个队列 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;
}
}

posted @ 2022-06-11 14:26  danieldai  阅读(22)  评论(0编辑  收藏  举报