第三章:表、栈和队列

关于循环队列:

  • 循环队列是顺序存储结构的,所以由数组实现。
  • 采用循环的方式实现队列是有好处的的,原因是队列如果采用数组实现时,如果不采用循环(或者说回绕)的方式,第一种情况是在出队时需要移动队列中后续元素,效率低;第二种情况是如果入队出队频繁,存储空间浪费太大。高一凡的《数据结构算法实现与解析》对这三种队列的顺序实现都做了详细分析。
  • 循环队列的具体实现因人而异,主要区别是队列的初始化,以及队列的结构中有没有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的这本书更像是在跟你面对面的讨厌一种数据结构,比如队列,老外写的书一般都这样,哈哈。而高一凡的《数据结构算法实现与解析》更全面。

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

 

posted @ 2015-04-27 17:16  iamswf  阅读(222)  评论(0编辑  收藏  举报