用两个队列模拟实现栈

2017-05-02 14:33 阅读 779 次 评论 0 条

前面我们用两个栈实现了队列的操作,相比较而言,用两个队列(先进先出)实现栈较为复杂一点,但是设计思路还是很简单的,下面我们就栈(先进后出)的入栈与出栈操作作以模拟实现。

设计思路

此题的意图在于用两个"先进先出"的队列实现一个"先进后出"的栈。

首先我们需要创建两个队列的成员对象queue1和queue2。其中queue1属于数据队列queue2属于辅助队列

①首先,我们将N个元素放入队列queue1中。

②其次,将queue1中的前N-1个元素按照队列先进先出的特性出队列,并保存在queue2辅助队列中。

③现在queue1中仅有一个元素,将这个元素出队列,即原始队列中的最后一个元素被删除。

④最后,将queue2队列中的N-1个元素依次放入queue1中,则满足了栈的先进后出的特性。

当我们将1234压入队列,然后将4出队列时,详细步骤如下:
步骤
操作
数据队列(queue1)
辅助队列(queue2)
1
push
1
2
push
1、2
3
push
1、2、3
4
push
1、2、3、4
5
pop
2、3、4
1
6
3、4
1、2
7
4
1、2、3
8
1、2、3
9
1
2、3
10
1、2
3
11
1、2、3

源代码及注释

版权声明:本文著作权归原作者所有,欢迎分享本文,谢谢支持!
转载请注明:用两个队列模拟实现栈 | 术与道的分享
分类:编程素养 标签:, ,
1024do.com导航_术与道导航平台

发表评论


表情