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

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

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

    解法:

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

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

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

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

           总结如下:  

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

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

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

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

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

           就实现了队列的功能。

           总结如下:

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

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

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

  • 相关阅读:
    AD用户移除所属组
    Mysql中文乱码问题完美解决方案
    将sqllite3数据库迁移到mysql
    检查远端服务器端口是否打开
    远程桌面卡
    不同平台的线程并发接口对比
    stm32之中断配置
    stm32之CMSIS标准、库目录、GPIO
    stm32 中断几个库函数实现过程分析
    Tree命令使用
  • 原文地址:https://www.cnblogs.com/guozhenqiang/p/5468719.html
Copyright © 2011-2022 走看看