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 // Push element x onto stack. 4 void push(int x) { 5 q.push(x); 6 } 7 8 // Removes the element on top of the stack. 9 void pop() { 10 queue<int> temp; 11 while(q.size()!=1){ 12 int x=q.front(); 13 q.pop(); 14 temp.push(x); 15 } 16 q.pop(); 17 while(!temp.empty()){ 18 int x=temp.front(); 19 temp.pop(); 20 q.push(x); 21 } 22 } 23 24 // Get the top element. 25 int top() { 26 queue<int> temp; 27 while(q.size()!=1){ 28 int x=q.front(); 29 q.pop(); 30 temp.push(x); 31 } 32 int x=q.front(); 33 q.pop(); 34 temp.push(x); 35 while(!temp.empty()){ 36 int x=temp.front(); 37 temp.pop(); 38 q.push(x); 39 } 40 return x; 41 } 42 43 // Return whether the stack is empty. 44 bool empty() { 45 return q.empty(); 46 } 47 private: 48 queue<int> q; 49 };
时间: 2024-10-26 19:34:48