35 _ 队列1 _ 什么是队列
线性结构的两种常见应用之二 队列
定义:
一种可以实现“先进先出”的存储结构
36 _ 队列2 _ 队列的分类 和 链式队列伪算法的讲解
分类:
链式队列:用链表实现
静态队列:用数组实现
37 _ 队列3 _ 学习循环队列必须要弄清楚的7个问题概述
静态队列
静态队列通常都必须是循环队列
循环队列的讲解:
1)静态队列为什么必须是循环队列
2)循环队列需要几个参数来确定
3)循环队列各个参数的含义
4)循环队列入队伪算法讲解
5)循环队列出队伪算法讲解
6)如何判断循环队列是否为空
7)如何判断循环队列是否已满
38 _ 队列4 _ 静态队列为什么必须是循环队列
如果要删除元素(出队),f只能加;如果要增加元素(入队),r只能加。(按照一般数组的方法)。r指向当前队列的下一个位置。
39 _ 队列5 _ 循环队列需要几个参数来确定及其含义的讲解
需要2个参数来确定
front
rear
两个参数不同场合有不同的含义
建议初学者先记住,然后慢慢体会
1)队列初始化
front和rear的值都是零
2)队列非空
front代表的是队列的第一个元素,rear代表的是队列的最后一个有效元素的下一个元素
3)队列空
front和rear的值相等,但不一定是零
40 _ 队列6 _ 循环队列各个参数的含义
41 _ 队列7 _ 循环队列入队伪算法讲解
两步完成:
1.将值存入r所代表的位置
2.错误的写法:r=r+1;
正确写法是:r=(r+1)%数组的长度
42 _ 队列8 _ 循环队列出队伪算法讲解
f=(f+1)%数组的长度
43 _ 队列9 _ 如何判断循环队列是否为空
如果front于rear的值相等,则该队列就一定为空。
44 _ 队列10 _ 如何判断循环队列是否已满
若f、r相等,不知道队列到底是空还是满。
预备知识:
front的值可能比rear大,也可能比rear小,也可能两者相等。
如何判断循环队列是否已满
两种方式:
1.多增加一个标志参数
2.少用一个元素【通常使用第二种方式】
如何判断队列已满:如果f和r的值紧挨着,则队列已满
用C语言伪算法表示就是:
if((r+1)%数组长度==f)
已满
else
不满
45 _ 复习 _ 求链表的长度
46 _ 复习上节课队列知识
队列
定义:一种可以实现先进先出的存储结构
分类:
静态队列
链式队列