[LeetCode] Implement Stack using Queues

待我称王封你为后i 2021-12-03 07:15 222阅读 0赞

Implement Stack using Queues

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 may assume that all operations are valid (for example, no pop or top operations will be called on an empty stack).
  • 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 — which means only push to back, pop from front, size, and is empty operations are valid.

Credits:
Special thanks to @jianchao.li.fighter for adding this problem and all test cases.

水题。用两个队列来模拟。

  1. 1 class Stack {
  2. 2 private:
  3. 3 queue<int> que[2];
  4. 4 int cur = 0;
  5. 5
  6. 6 public:
  7. 7 // Push element x onto stack.
  8. 8 void push(int x) {
  9. 9 que[cur].push(x);
  10. 10 }
  11. 11
  12. 12 // Removes the element on top of the stack.
  13. 13 void pop(void) {
  14. 14 while (que[cur].size() > 1) {
  15. 15 que[1 - cur].push(que[cur].front());
  16. 16 que[cur].pop();
  17. 17 }
  18. 18 que[cur].pop();
  19. 19 cur = 1 - cur;
  20. 20 }
  21. 21
  22. 22 // Get the top element.
  23. 23 int top(void) {
  24. 24 while (que[cur].size() > 1) {
  25. 25 que[1 - cur].push(que[cur].front());
  26. 26 que[cur].pop();
  27. 27 }
  28. 28 int top = que[cur].front();
  29. 29 que[1 - cur].push(que[cur].front());
  30. 30 que[cur].pop();
  31. 31 cur = 1 - cur;
  32. 32 return top;
  33. 33 }
  34. 34
  35. 35 // Return whether the stack is empty.
  36. 36 bool empty(void) {
  37. 37 return que[cur].empty();
  38. 38 }
  39. 39 };

转载于:https://www.cnblogs.com/easonliu/p/4568492.html

发表评论

表情:
评论列表 (有 0 条评论,222人围观)

还没有评论,来说两句吧...

相关阅读