zoukankan      html  css  js  c++  java
  • 算法导论10.17习题解答(用两个队列实现一个栈)

    CLRS 10.1-7 :
    说明如何用两个队列来实现一个栈,并分析有关栈操作的运行时间。

    解法:
    1.有两个队列q1和q2,先往q1内插入a,b,c,这做的都是栈的push操作。
    2.现在要做pop操作,即要得到c,这时可以将q1中的a,b两个元素全部dequeue并存入q2中,这时q2中元素为a,b,对q1再做一次dequeue操作即可得到c。
    3.如果继续做push操作,比如插入d,f,则把d,f插入到q2中,
    4.此时若要做pop操作,则做步骤2
    5.以此类推,就实现了用两个队列来实现一个栈的目的。

    注意在此过程中,新push进来的元素总是插入到非空队列中,空队列则用来保存pop操作之后的那些元素,那么此时空队列不为空了,原来的非空队列变为空了,总是这样循环。

    对于push和pop操作,其时间为O(n).

  • 相关阅读:
    指针数组和数组指针
    initializer_list
    main:处理命令行选项
    Synchronized 和Lock区别
    sleep和wait的区别
    什么时候会发生类初始化
    类的加载与ClassLoader的理解
    获取Class类的实例
    元注解
    IO流思维导图
  • 原文地址:https://www.cnblogs.com/null00/p/2065057.html
Copyright © 2011-2022 走看看