用栈实现队列
使用栈实现队列的下列操作:
push(x) -- 将一个元素放入队列的尾部。
pop() -- 从队列首部移除元素。
peek() -- 返回队列首部的元素。
empty() -- 返回队列是否为空。
思路:设计两个栈s1,s2,用s1模拟入队列,s2模拟出队列
队列是先进先出,栈是后进先出,所以让s1中元素出栈,入到s2中,最后栈顶就是要获取的元素(也就是队头),再把s2中元素重新放入s1中,进行下一次出入队列的实现,如图步骤1、2、3
class MyQueue {
public:
/** Initialize your data structure here. */
MyQueue() {
}
void push(int x) {
s1.push(x);//把元素放入s1中
}
int pop() {
while (!s1.empty())
{
s2.push(s1.top());//从s1中获取元素,直至s1为空
s1.pop();
}
int top = s2.top();//获取s2栈顶(队列的队头)
s2