题目描述:
使用栈实现队列的下列操作: push(x) -- 将一个元素放入队列的尾部。 pop() -- 从队列首部移除元素。 peek() -- 返回队列首部的元素。 empty() -- 返回队列是否为空。主要思路:
入队时
1.直接push到inStack中出队时
1.如果outStack为空,先把inStack所有元素逐一弹出,push到outStack,最后弹出outStack的栈顶元素 2.如果outStack不为空,直接弹出outStack的栈顶元素代码如下:
class MyQueue { public: stack<int> inStack; stack<int> outStack; MyQueue() { } void push(int x) { inStack.push(x); } int pop() { cheak(); int a=outStack.top(); outStack.pop(); return a; } int peek() { cheak(); return outStack.top(); } bool empty() { return inStack.empty()&&outStack.empty(); } void cheak() { if(outStack.empty()) { while(!inStack.empty()) { outStack.push(inStack.top()); inStack.pop(); } } } };执行结果:双100%