用队列模仿栈
LEETCODE 225
使用队列实现栈的下列操作:
push(x) -- 元素 x 入栈
pop() -- 移除栈顶元素
top() -- 获取栈顶元素
empty() -- 返回栈是否为空
注意:
你只能使用队列的基本操作-- 也就是 push to back, peek/pop from front, size, 和 is empty 这些操作是合法的。
你所使用的语言也许不支持队列。 你可以使用 list 或者 deque(双端队列)来模拟一个队列 , 只要是标准的队列操作即可。
你可以假设所有操作都是有效的(例如, 对一个空的栈不会调用 pop 或者 top 操作)。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/implement-stack-using-queues
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
1 class MyStack { 2 public: 3 queue <int> q; 4 /** Initialize your data structure here. */ 5 MyStack() { 6 7 8 } 9 10 /** Push element x onto stack. */ 11 void push(int x) { 12 int size =q.size(); 13 q.push(x); 14 while(size--) 15 { 16 int temp = q.front(); 17 q.pop(); 18 q.push(temp); 19 20 } 21 } 22 23 /** Removes the element on top of the stack and returns that element. */ 24 int pop() { 25 int temp =q.front(); 26 q.pop(); 27 return temp; 28 29 } 30 31 /** Get the top element. */ 32 int top() { 33 return q.front(); 34 } 35 36 /** Returns whether the stack is empty. */ 37 bool empty() { 38 return q.empty(); 39 } 40 }; 41 42 /** 43 * Your MyStack object will be instantiated and called as such: 44 * MyStack* obj = new MyStack(); 45 * obj->push(x); 46 * int param_2 = obj->pop(); 47 * int param_3 = obj->top(); 48 * bool param_4 = obj->empty(); 49 */
原文:https://www.cnblogs.com/KID-XiaoYuan/p/12201606.html