第三章:表、栈和队列
2015-04-27 17:16
127 查看
关于循环队列:
循环队列是顺序存储结构的,所以由数组实现。
采用循环的方式实现队列是有好处的的,原因是队列如果采用数组实现时,如果不采用循环(或者说回绕)的方式,第一种情况是在出队时需要移动队列中后续元素,效率低;第二种情况是如果入队出队频繁,存储空间浪费太大。高一凡的《数据结构算法实现与解析》对这三种队列的顺序实现都做了详细分析。
循环队列的具体实现因人而异,主要区别是队列的初始化,以及队列的结构中有没有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的这本书更像是在跟你面对面的讨厌一种数据结构,比如队列,老外写的书一般都这样,哈哈。而高一凡的《数据结构算法实现与解析》更全面。
关于链式队列:后面有时间再补充
循环队列是顺序存储结构的,所以由数组实现。
采用循环的方式实现队列是有好处的的,原因是队列如果采用数组实现时,如果不采用循环(或者说回绕)的方式,第一种情况是在出队时需要移动队列中后续元素,效率低;第二种情况是如果入队出队频繁,存储空间浪费太大。高一凡的《数据结构算法实现与解析》对这三种队列的顺序实现都做了详细分析。
循环队列的具体实现因人而异,主要区别是队列的初始化,以及队列的结构中有没有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的这本书更像是在跟你面对面的讨厌一种数据结构,比如队列,老外写的书一般都这样,哈哈。而高一凡的《数据结构算法实现与解析》更全面。
关于链式队列:后面有时间再补充
相关文章推荐
- 《数据结构》第三章 栈和队列学习指南
- 数据结构 第三章 栈和队列
- 数据结构与算法MOOC / 第三章 栈与队列 练习题 8:抓住那头牛
- 第三章 栈和队列 思维导图
- 数据结构(C++版)第三章 栈和队列
- 第三章:栈与队列算法设计题(2)
- JAVA数据结构和算法:第三章(栈和队列)
- 数据结构(C语言版)---第三章栈和队列 3.2.1 -- 3.2.3 十进制转二进制、括号合法性检测及行编辑
- 第三章 表、栈和队列
- 《数据结构》第三章 栈和队列教学设计
- 《数据结构》第三章 栈和队列问题回收站
- 第三章:栈和队列
- 第三章 栈和队列 思维导图
- 第三章:栈和队列
- 数据结构第三章-队列
- 第三章 表、栈和队列
- 第三章 队列【数据结构】【链队列】【循环队列】
- 《数据结构》第三章 栈和队列 实验
- 第三章 栈和队列知识结构
- 第三章 表栈和队列