• 第三章:表、栈和队列


    关于循环队列:

    • 循环队列是顺序存储结构的,所以由数组实现。
    • 采用循环的方式实现队列是有好处的的,原因是队列如果采用数组实现时,如果不采用循环(或者说回绕)的方式,第一种情况是在出队时需要移动队列中后续元素,效率低;第二种情况是如果入队出队频繁,存储空间浪费太大。高一凡的《数据结构算法实现与解析》对这三种队列的顺序实现都做了详细分析。
    • 循环队列的具体实现因人而异,主要区别是队列的初始化,以及队列的结构中有没有Q_Size这个域,对于没有Q_Size域的结构,需要根据front和rear之间的差值来判断队空或者队满,并且只有队列中少用一个元素,才可以区分出队空和队满两种状态。如果将front和rear初始化为均为0,那么判断队空的条件是rear - front = 0,判断队满的条件是(rear +1)%MAX_SIZE - front = 0;而在Weiss书中,作者将front初始化为1,将rear初始化为0,此时判断对空的条件是rear - front = -1,判断队满的条件是(rear +1)%MAX_SIZE - front = -1。而如果队列的结构中含有Q_Size这个用来指示当前队列大小的域,那么就不用少用队列中的一个元素了,只要根据Q_Size是等于0还是MAX_Size即可区分出队列是空还是满。
    • 看到本章,发现Weiss的这本书更像是在跟你面对面的讨厌一种数据结构,比如队列,老外写的书一般都这样,哈哈。而高一凡的《数据结构算法实现与解析》更全面。

    关于链式队列:后面有时间再补充

  • 相关阅读:
    20210907
    彻底解决Manjaro中的编程字体问题
    manjaro上安装腾讯会议
    应对github的新变换,更加方便应用github
    Failed to stop iptables.service: Unit iptables.service not loaded.
    centOS7给虚拟机设置固定ip地址
    centOS给虚拟机设置固定ip地址
    SpringBoot启动报错Failed to determine a suitable driver class
    Jasypt加解密
    java json字符串转JSONObject对象、转JAVA对象、转List<T>对象
  • 原文地址:https://www.cnblogs.com/iamswf/p/4460737.html
Copyright © 2020-2023  润新知