数据结构与算法 (11).pdf
《数据结构与算法 (11).pdf》由会员分享,可在线阅读,更多相关《数据结构与算法 (11).pdf(34页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、14.1 队列的基本概念4.2 队列的顺序表示与实现4.3 队列的链式表示与实现4.4 队列的应用第4章 队列及其应用2 24.1.1 队列的定义4.1.2 队列的抽象数据类型4.1 队列的基本概念3 队列的定义队列的定义4.1.1 队列的定义队列队列(Queue)是一种运算受限的特殊的线性是一种运算受限的特殊的线性表,它只允许在表的一端进行插入,而在表的另一表,它只允许在表的一端进行插入,而在表的另一端进行删除。端进行删除。队尾队尾(rear):是队列中允许插入的一端。是队列中允许插入的一端。队头队头(front):是队列中允许删除的一端。是队列中允许删除的一端。队列的术语队列的术语4队列的
2、特点队列示意图4.1.1 队列的定义队列的定义a1a2a3 an队头队尾出队入队先进先出(First In First Out,简称FIFO)。又称队列为先进先出表。5 54.1.1 队列的定义4.1.2 队列的抽象数据类型4.1 队列的基本概念6ADT Queue 数据对象:数据关系:基本操作:ADT Queue见下页Dai|aiElemSet,i=1,2,.,n,n0R1|ai-1,ai D,i=2,.,n约定其中a1端为队列头,an端为队列尾4.1.2 队列的抽象数据类型7 7InitQueue(&Q)/初始化队列DestroyQueue(&Q)/销毁队列QueueEmpty(Q)/判队
3、列是否空QueueLength(Q)/求队列长度GetHead(Q,&e)/取队头元素ClearQueue(&Q)/清空队列EnQueue(&Q,e)/入队列DeQueue(&Q,&e)/出队列QueueTravers(Q,visit()/遍历队列队列的基本操作8 84.1 队列的基本概念4.2 队列的顺序表示与实现4.3 队列的链式表示与实现4.4 队列的应用举例第4章 队列及其应用9 9 4.2.1 顺序队列4.2.2 循环队列4.2.3 循环队列的实现4.2 4.2 队列的顺序表示与实现10 采用顺序存储结构的队列称为顺序队列。它是利用一组地址连续的存储单元依次存放自队头到队尾的数据元素
4、。顺序队列通常由一个一维数组和记录队列头元素位置的分量front以及记录队尾元素位置的分量rear组成。4.2.1 顺序队列1111typedef struct ElemType dataMaxSize;int front,rear;QNode,*SqQueue;SqQueue Q;01 2 3maxlen-1nfrontrear dataQ顺序队列的C语言描述:121201 2 3maxlen-1nfrontrear dataQ front front 和和rear rear 的初始值在队列初始化时均置的初始值在队列初始化时均置为。为。入队时尾指针加,并将新元素插入所指的位置。出队时头指针加
5、,然后删去所指的元素,并返回被删元素。约定:在非空队列里,头指针始终指向队头元素前的空位,而尾指针始终指向队尾元素。1313(a)队列初始为空(c)a出队出队frontrearfront (b)a,b,c入队入队abcfront abcfront bc(d)b出队出队front rearrearrearrearrearfront 0 1 2 31414 队空:Q-front=Q-rear 队满:队满:QQ-rear=Maxsizerear=Maxsize-1 1 队长:队长:Q Q-rear rear-QQ-frontfront 入队:将队尾指针加一入队:将队尾指针加一,即,即QQ-rearr
6、ear=QQ-rear rear+1+1,再将新元素按,再将新元素按rearrear指示位置加入指示位置加入 出队:将队头指针加一,即Q-front=Q-front+1,再将front指示的元素取出。此时:1515可以看出:可以看出:尾指针 rear 已指到数组的最后一个元素,即rear=MaxSize-1,若这时入队,则产生“溢出”同时经过一定数量的出队后,头指针 front 可指向队列的中间,即:数组的前面部分有闲置的空间 这种有可用空间存在的溢出,称“假溢出”问题:如何利用数组前面的可用空间?16164.2.1 顺序队列 4.2.2 循环队列4.2.3 循环队列的实现4.2 4.2 队列
7、的顺序表示与实现174.2.2 循环队列循环队列循环队列:将数组空间看成是一个首尾相接的圆环,即:将data0 看作是dataMaxSize-1 后的下一个存储位置,存储在其中的队列称为循环队列循环队列(CircularCircular Queue)Queue)。在循环队列中进行出队、入队操作时,头尾指针仍要加1。只不过当头尾指针指向数组的上界(MaxSize-1)时,其加1操作的结果是指向数组的下界0。即:指针运算是+1后对数组长度取模显然,因为循环队列元素的存储空间可以被利用,除非数组真的被队列元素全部占用,否则不会上溢。因此,除一些简单的应用外,真正实用的顺序队列是循环队列。012345
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 数据结构与算法 11 数据结构 算法 11
限制150内