Implement the following operations of a stack using queues.
- push(x) -- Push element x onto stack.
- pop() -- Removes the element on top of the stack.
- top() -- Get the top element.
- empty() -- Return whether the stack is empty.
Notes:
- You must use only standard operations of a queue -- which means only
push to back
,peek/pop from front
,size
, andis empty
operations 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)
很简单一道题,如果用栈实现队列有点难度,还需要两个栈。用队列实现栈的话还是比较简单的,用一个队列就可以完成了。
1 class Stack { 2 public: 3 queue<int> Queue1; 4 int* back,*tmp; 5 // Push element x onto stack. 6 void push(int x) { 7 Queue1.push(x); 8 9 10 } 11 12 // Removes the element on top of the stack. 13 void pop() { 14 back=&Queue1.back(); 15 while(&Queue1.front()!=back){ 16 tmp=&Queue1.front(); 17 Queue1.pop(); 18 Queue1.push(*tmp); 19 } 20 Queue1.pop(); 21 } 22 23 // Get the top element. 24 int top() { 25 return Queue1.back(); 26 } 27 28 // Return whether the stack is empty. 29 bool empty() { 30 return Queue1.empty(); 31 32 } 33 };