leetCode(44):Implement Stack using Queues

Implement the following operations of a stack using queues.

Notes:You must useonlystandard operations of a queue — which means onlypush to back,peek/pop from front,size, andis emptyoperations are valid.Depending on your language, queue may not be supported natively. You may simulate a queue by using a list or deque (double-ended queue), as long as you use only standard operations of a queue.You may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).

两个队列,永远有一个为空,插入时,,插入到不为空的队列中,如果都为空则任意;弹出时,把不为空队列中的所有元素(最后一个除外)转移到另一队列当中,并将最后一个不插入,直接删除即可。如果两个队列均为空,则说明栈为空。

class Stack {public:// Push element x onto stack.void push(int x) {//在非空队列中插入if (aqueue.empty())bqueue.push(x);elseaqueue.push(x);}// Removes the element on top of the stack.void pop() {if (aqueue.empty()){//转移while (bqueue.size() != 1){int tmp = bqueue.front();aqueue.push(tmp);bqueue.pop();}bqueue.pop();}else{while (aqueue.size() != 1){int tmp = aqueue.front();bqueue.push(tmp);aqueue.pop();}aqueue.pop();}}// Get the top element.int top() {int tmp;if (aqueue.empty()){while (!bqueue.empty()){tmp= bqueue.front();aqueue.push(tmp);bqueue.pop();}}else{while (!aqueue.empty()){tmp = aqueue.front();bqueue.push(tmp);aqueue.pop();}}return tmp;}// Return whether the stack is empty.bool empty() {return (aqueue.empty() && bqueue.empty());}private:queue<int> aqueue;queue<int> bqueue;};

版权声明:本文为博主原创文章,未经博主允许不得转载。

可是,我却迈不开步伐,怎么也走不出那个圈……

leetCode(44):Implement Stack using Queues

相关文章:

你感兴趣的文章:

标签云: