用两个栈实现队列的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操作。 队列中的元素为int类型。《剑指offer》
用两个栈来实现一个队列,完成队列的Push和Pop操作。 队列中的元素为int类型