丝毫没有技术含量的题!!将一个队列弹到只剩一个元素,这个元素就是最后一个进来的,就是栈顶,将它出队就行了,用另一个队列来接收弹出的元素,然后用一个tmp来进行队列1和队列2的交换就行了
class MyStack {
public:
/** Initialize your data structure here. */
MyStack() {
}
/** Push element x onto stack. */
void push(int x) {
q1.push(x);
}
/** Removes the element on top of the stack and returns that element. */
int pop() {
while(q1.size() != 1){
q2.push(q1.front());
q1.pop();
}
int tmp = q1.front();
q1.pop();
queue<int> q3 = q1;
q1 = q2;
q2=q3;
return tmp;
}
/** Get the top element. */
int top() {
while(q1.size() != 1){
q2.push(q1.front());
q1.pop();
}
int tmp = q1.front();
q2.push(q1.front());
q1.pop();
queue<int> q3 = q1;
q1 = q2;
q2=q3;
return tmp;
}
/** Returns whether the stack is empty. */
bool empty() {
return q1.empty();
}
private:
//因为栈是先进后出的,队列是先进先出的,双队列,出栈操作就是把q1弄到只剩一个元素然后出队就行了
queue<int> q1;
queue<int> q2;
};