一、两个栈实现一个队列

设两个栈分别为stack1和stack2,stack1主要负责“进入”,模拟的是“队尾”;stack2主要负责“弹出”,模拟的是“队头”。具体思路如下:

1、对于“数据入队”操作,只需要将数据压入stack1即可

2、对于“数据出队”操作,若stack2非空,直接弹出栈顶元素;若stack2是空,将stack1中所有元素弹入stack2之后,弹出stack2栈顶元素

如何用两个栈实现一个队列以及用两个队列实现一个栈

实现代码如下:

 1 class Solution
 2 {
 3 public:
 4     void push(int node) {
 5         stack1.push(node);
 6     }
 7  
 8     int pop() {
 9         int a;
10         if (stack2.empty())
11         {
12             while (!stack1.empty())
13             {
14                 a = stack1.top();
15                 stack1.pop();
16                 stack2.push(a);
17             }
18         }
19         a = stack2.top();
20         stack2.pop();
21         return a;
22     }
23  
24 private:
25     stack<int> stack1;
26     stack<int> stack2;
27 };
View Code

相关文章:

  • 2022-12-23
  • 2021-09-15
  • 2022-12-23
  • 2021-08-13
  • 2021-06-17
  • 2021-06-30
  • 2021-11-08
猜你喜欢
  • 2021-07-08
  • 2021-08-22
  • 2021-05-31
  • 2021-07-29
  • 2021-12-11
  • 2021-09-20
相关资源
相似解决方案