#include <iostream>
#include<stack>//栈
using namespace std;
class CQueue{
stack<int> stack1,stack2;
public:
CQueue(){}
void append(int value){
stack1.push(value);
}
int del(){
int value;
//如果stack2是非空的,栈顶元素即为队首,直接出栈即可
if(!stack2.empty()){
value=stack2.top();
stack2.pop();
}else{
//如果stack2是空的,则要将stack1中的元素全部出栈,并压入至stack2中
//然后判断stack2中的元素情况,然后得到队首元素
//将stack1中的元素转移至stack2中
while(!stack1.empty()){
stack2.push(stack1.top());
stack1.pop();
}
//如果stack2非空,取stack2的栈顶元素即可
if(!stack2.empty()){
value=stack2.top();
stack2.pop();
}else{
//如果此时stack2仍为空,则说明队列为空,没有元素
value=-1;
}
}
cout<<value<<endl;
return value;
}
};
int main()
{
CQueue q;
q.append(1);
q.append(2);
q.append(3);
q.del();
q.del();
q.del();
q.del();
q.del();
q.del();
return 0;
}
c++ 两个栈实现一个队列
最新推荐文章于 2024-04-22 23:20:09 发布