当前课程知识点:数据结构 > 第3章 栈和队列 > 3.5 队列的定义及ADT > 讲解
这一节,我们来学习一个新的数据结构:队列
先来看队列的定义
及抽象数据类型,队列
也是一种操作受限的线性表
它规定:只能在表的一端进行插入
在另一端进行删除
注意,它跟前面的栈不一样
栈是在同一端做插入
删除
而队列
是在一端做插入
在另一端作删除
允许插入的这一端
叫做队尾;允许删除的
这一端,叫做队头
英文
分别是rear和front
我们来看一个图
这个图,跟现实世界当中的排队是一样的
它不涉及到内存
现实世界都是向队尾去插入元素
出队的元素
都是从队头出去的
所以,在队尾入队
在队头出队
那么
上述限制,使得队列具有先进先出的性质
那些先入队的元素总是先出队
为了区别于线性表的插入和删除
我们将队列的插入称为入队,enter
将队列的删除称为出队,remove
下面,我们来看队列的抽象数据类型
我们主要关注它的操作部分。初始化,这个前面已经遇到很多次了
在内存当中,从无到有
创建一个队列Q;销毁,释放队列所占的内存
截止到目前为止
我们并没有专门地去写销毁的算法
无论是前面的线性表
还是栈,实际上,销毁
比较简单
无非就是释放一个结构体变量
它所占的内存空间而已
所以,我们没有单独地去实现销毁
第三个操作,isFull,判断队列Q是否为满的
将来,队列能够存放的元素个数也是有一定上限的
所以,这时候我们判断队列是否为满
把它放到full这个参数里面
第四个操作,得到队列的长度,也就是队列当中包含元素的个数
把它放到length这个参数里面
enter,将元素e
入队到队列Q当中
注意,队列的入队是向队尾插入的
出队,remove,将队列Q的队头元素删除
并且,把这个值放到e里面
-讲解
-作业
-讨论1
-讨论2
-1.1 数据结构是什么
--讲解
--作业
-1.2 概念和术语
--讲解
--作业1
--作业2
-1.3 抽象数据类型
--讲解(上)
--讲解(下)
--作业
-1.4 算法及其设计要求
--讲解
--作业
-1.5 算法分析与度量
--讲解(上)
--讲解(下)
--作业1
--作业2
--讨论
-2.1 概念及ADT
--讲解
--作业
-2.2 线性表的顺序实现——顺序表
--讲解(上)
--讲解(中)
--讲解(下)
--作业1
--作业2
-2.3 线性表的链式实现——链表
--讲解(上)
--讲解(中)
--讲解(下)
--作业1
--作业2
-2.4 线性表的应用——多项式
--讲解
--作业
-讨论
-3.1 栈的定义及ADT
--讲解
--作业
-3.2 栈的顺序实现——顺序栈
--讲解
--作业
-3.3 栈的应用
--讲解
--作业
-3.4 栈与递归
--讲解(上)
--讲解(下)
--作业
-3.5 队列的定义及ADT
--讲解
--作业
-3.6 队列的顺序实现——循环队列
--讲解(上)
--讲解(下)
--作业
-讨论
-4.1 数组的定义
--讲解
--作业
-4.2 数组的顺序实现
--讲解
--作业1
--作业2
-4.3 特殊矩阵的压缩存储
--讲解
--作业
-4.4 稀疏矩阵的压缩存储
--讲解(上)
--讲解(下)
--作业
-讨论
-5.1 概念及术语
--讲解
--作业
-5.2 二叉树及其性质
--讲解
--作业1
--作业2
-5.3 二叉树的存储
--讲解
--作业
-5.4 二叉树的遍历及创建
--讲解(上)
--讲解(下)
--作业
-5.5 线索二叉树
--讲解
--作业
-5.6 树与森林
--讲解
--作业
-5.7 Huffman树
--讲解(上)
--讲解(下)
--作业
-讨论
-6.1 概念和术语
--讲解
--作业
-6.2 存储与实现
--讲解(上)
--讲解(下)
--作业
-6.3 遍历
--讲解(上)
--讲解(下)
--作业
-6.4 最小生成树
--讲解(上)
--讲解(下)
--作业1
--作业2
-6.5 拓扑排序
--讲解
--作业
-6.6 最短路径
--讲解
--作业
-讨论
-7.1 概念和术语
--讲解
--作业
-7.2 静态查找表
--讲解(上)
--讲解(下)
--作业
-7.3 二叉排序树
--讲解(上)
--讲解(下)
--作业
-7.4 平衡二叉树
--讲解
--作业
-7.5 哈希表
--讲解(上)
--讲解(下)
--作业
-讨论
-8.1 概念
--讲解
--作业
-8.2 插入排序
--讲解(上)
--讲解(下)
--作业
-8.3 交换排序
--讲解(上)
--讲解(下)
--作业
-8.4 选择排序
--讲解(上)
--讲解(中)
--讲解(下)
--作业
-8.5 归并排序
--讲解
--作业
-讨论