用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if(stack1.empty()&&stack2.empty())
{
cout<<"这个队列为空"<<endl;
}
if(!stack2.empty())
{
stack2.pop();
}
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
stack2.pop();
}
private:
stack<int> stack1;
stack<int> stack2;
};
思想没问题,但是在牛客上没编译成功:

但是很奇怪
class Solution
{
public:
void push(int node) {
stack1.push(node);
}
int pop() {
if (stack2.empty()) {
while (!stack1.empty()) {
stack2.push(stack1.top());
stack1.pop();
}
int temp = stack2.top();
stack2.pop();
return temp;
} else {
int temp = stack2.top();
stack2.pop();
return temp;
}
}
private:
stack<int> stack1;
stack<int> stack2;
};
这样就编译成功了,可能是语句表达逻辑更加清楚了吧;
本文介绍了一种使用两个栈来实现队列的方法,详细展示了如何完成队列的Push和Pop操作,通过调整代码逻辑,实现了在牛客网上的成功编译。
403

被折叠的 条评论
为什么被折叠?



