用两个栈实现队列的POP和PUSH操作

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了用两个栈实现队列的POP和PUSH操作相关的知识,希望对你有一定的参考价值。

参考技术A push(1)

push(2)

push(3)

pop()

pop()

push(4)

push(5)

pop()

pop()

pop()

我们可以使用以下方法把s1的内容移到s2,翻转一下,此时stack2.pop()的值就是队首

把要push的值都往stack1里面放,此时你会发现,如果我们要pop队列,只需pop栈2就好了

第一次pop()掉stack2的内容,当stack2为空时,我们又回到最初的选择,把stack1的元素全部翻转到stack2,然后popStack2

用两个栈来实现一个队列,完成队列的Push和Pop操作。

用两个栈来实现一个队列,完成队列的Push和Pop操作。队列中的元素为int类型。

 1 using System.Collections.Generic;
 2 namespace JianZhiOffer
 3 {
 4     class StackToQueue
 5     {
 6         Stack<int> stk1 = new Stack<int>();
 7         Stack<int> stk2 = new Stack<int>();
 8 
 9         // 入队
10         public void push(int node)
11         {
12             while (stk2.Count > 0)
13             {
14                 stk1.Push(stk2.Pop());
15             }
16 
17             stk1.Push(node);
18         }
19 
20         // 出队
21         public int pop()
22         {
23             while (stk1.Count > 0)
24             {
25                 stk2.Push(stk1.Pop());
26             }
27 
28             return stk2.Pop();
29         }
30     }
31 }

 

以上是关于用两个栈实现队列的POP和PUSH操作的主要内容,如果未能解决你的问题,请参考以下文章

用两个栈来实现一个队列,完成队列的Push和Pop操作。

算法:用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。《剑指offer》

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型

用两个栈实现队列

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型。

用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型