225. 用队列实现栈
作者:互联网
✔做题思路 or 感想 :
-
用队列实现栈,仅仅用一个队列就可以了
-
push:直接push进队列就好
-
pop:把队首加到队尾,直到最开始的队尾变成了队首,这样就可以取最开始的队尾的值了。
-
peek:这个和pop的操作差不多,但是最后的操作有别。在最后取完队首(即是最开始的栈顶)后,要再把队首加到队尾去,还原成一开始的队列!不然最开始的队首就变成了栈顶了!
class MyStack { public: MyStack() { } queue<int>que; void push(int x) { que.push(x); } int pop() { int size = que.size() - 1; while (size--) { int front = que.front(); que.pop(); que.push(front); } int result = que.front(); que.pop(); return result; } int top() { int size = que.size() - 1; while (size--) { int front = que.front(); que.pop(); que.push(front); } int result = que.front(); //这里记得把队列还原回一开始的队列!!! que.push(result); que.pop(); return result; } bool empty() { return que.empty(); } }; /** * Your MyStack object will be instantiated and called as such: * MyStack* obj = new MyStack(); * obj->push(x); * int param_2 = obj->pop(); * int param_3 = obj->top(); * bool param_4 = obj->empty(); */
-
标签:队列,pop,实现,int,que,push,front,225,size 来源: https://www.cnblogs.com/doomaa/p/16053840.html