题目描述:
使用两个栈来实现队列的一些操作:push()、pop()、top()
思路:
创建两个栈S1和S2,入队时,将元素压入S1,出队时,如果栈S2中的元素个数为0,则将S1中的元素一个个压入S2,并弹出最后压入的那个元素,如果栈S2中的元素个数不为0,则直接弹出S2中的顶元素。
代码:
class Queue
{
public:
stack<int> stack1;
stack<int> stack2;
Queue()
{
// to do...
}
void push(int element)
{
stack1.push(element);
}
void pop()
{
if(stack2.empty())
{
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
}
stack2.pop();
}
int top()
{
if(stack2.empty())
{
while(!stack1.empty())
{
stack2.push(stack1.top());
stack1.pop();
}
}
return stack2.top();
}
};