类别 数据结构
1、主题
2、学习视频和资料
视频及课件 http://www.icourse163.org/learn/zju-93001?tid=120001#/learn/content?type=detail&id=398005
3、队列的基本操作
- 定义队列元素
- 建立队列信息(队首和队尾标记,总长度)
- 初始化队列
- 销毁队列
- 插入(只能在尾部,判断是否溢出)(入队)
- 删除(只能在头部,判断对列是否为空)(出队)
4、存储(实现结构)
- 顺序存储——连续内存,如数组
- 链式存储
5、循环对列
插入后指针的移动rear = (rear + 1) mod size;
判断是否为空 (front + 1) mod size == rear
(2)循环对列为什么会出现空、满无法区分?根本原因?
解决方案 :使用额为标记,如size存放的元素个数
最多只放n-1个元素,n-1时即为满(一般采取这种方案)
6、队列的单向链表存储实现的注意点
front 和rear指针与单向链表头尾如和对应?
front做删除操作, rear做插入操作
链表的头做删除和插入操作都方便
单向链表的尾适合做插入操作,不适合做删除操作(不是双向链表,不方便找到前一个),删除后不知道前面一个在哪里。
所以,单向链表的尾只能放rear,相应头放front。
6、代码
7、后记
有问题可邮件[email protected],欢迎讨论!
时间: 2024-10-26 15:31:35