zoukankan      html  css  js  c++  java
  • 栈与队列的互相转化

    问题描述:实现栈与队列的互相转化。

    分析:曾今碰到过的一个面试题目,面试官要求如何用队列实现栈,有这个问题进而又引出了如何用栈实现队列,和大家分享下。

    解法:

           用队列实现栈:栈的特点是先进后出,而队列的特点是先进先出,只用一个队列是不可能实现栈的,因此可以使用两个队列来实现

           设两个队列分别是Q1和Q2,当需要将元素压栈时,将元素进入队列Q1,如果要出栈,则将Q1中的除最后一个元素之外的所有元素

           出队列,并进入队列Q2,这样就完成了一次出栈。如果再次进栈,只需要将元素进入目前的非空对列中即可,如果要出栈,则把非空

           队列中的前几个元素再次出栈,并进入到另一个队列即可。如此反复,就实现了栈的功能。

           总结如下:  

                      压栈:向非空队列中压入即可。

                      出栈:将非空对列中的所有元素出队列,并将其进入到另一个空队列中,但最后一个元素不进入,直接扔掉即可。

           用栈实现队列:同样需要利用栈和队列的特点。用两个栈实现队列。

           设两个队列为S1和S2,当元素进队时,将元素压入栈S1中,出队时将S1中全部元素弹出并压入栈S2,最后一个元素不压入栈S2,

           直接扔掉,然后把栈S2中全部元素出栈,并压入S1中,当再次需要进队时把元素压入S1中,需要出队时,再次移到S2中,如此反复,

           就实现了队列的功能。

           总结如下:

                        进队:向非空栈中压入元素。

                        出队:将非空栈中全部元素出栈并压入另一个栈中,但最后一个元素不压入,直接将其扔掉,然后把栈中所有的元素出栈,并压入原来的栈中。

    由于比较简单,我就不再编程实现了,读者可以自己编程验证。

  • 相关阅读:
    nullnull聚类小文(二)
    classjavaCore Java Question List #6
    设置仿真器HJTAG ARM仿真器和MDK 联调设置
    二分图判断hdu 1829 A Bug's Life
    信息掩码游戏地图掩码相关(msk)
    导航accessibilityAndroid 抽屉导航
    算法nodehdu 2112 hdu today
    链接函数hdu 1234开门人和关门人
    分配器内存一步一步写STL:空间配置器(1)
    程序连接如何使用JLink V8 烧写程序到NOR Flash
  • 原文地址:https://www.cnblogs.com/guozhenqiang/p/5468719.html
Copyright © 2011-2022 走看看