栈和队列队列_第1页
栈和队列队列_第2页
栈和队列队列_第3页
栈和队列队列_第4页
栈和队列队列_第5页
已阅读5页,还剩8页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第3章栈和队列-队列嘉应学院数学系数据结构讲义3.4.1队列的定义队列(Queue)也是一种运算受限的线性表。它只允许在表的一端进行插入,而在另一端进行删除。允许删除的一端称为队头(front),允许插入的一端称为队尾(rear)。队列的修改是依先进先出的原则进行的。队列的基本运算1.初始化队列InitQueue(&Q)

将队列Q设置成一个空队列。2.入队列EnQueue(&Q,X)将元素X插入到队尾中,也称“进队”,“插入”。3.出队列DeQueue(&Q,&e)

将队列Q的队头元素删除,并用e返回其值,也称“退队”、“删除”。4.取队头元素GetHead(Q,&e)

得到队列Q的队头元素之值,并用e返回其值。5.判队空QueueEmpty(Q)

判断队列Q是否为空,若为空返回1,否则返回0。#defineMAXSIZE100typedefstruct{

ElemTypedata[MAXSIZE];

intfront;

intrear;}SqQueue;顺序队列的操作演示flash在非空队列里,头指针始终指向队头元素,而尾指针始终指向队尾元素的下一位置。3.4.3队列的顺序实现

为充分利用向量空间,克服上述假上溢现象,可以将向量空间想象为一个首尾相接的圆环,并称这种向量为循环向量,存储在其中的队列称为循环队列(CircularQueue)。循环队列中进行出队、入队操作时,头尾指针仍要加1,朝前移动。只不过当头尾指针指向向量上界(QueueSize-1)时,其加1操作的结果是指向向量的下界0。循环队列的操作演示flash012345rearfrontJ5J6J7012345rearfrontJ4J9J8J4J5J6012345rearfront初始状态J4,J5,J6出队J7,J8,J9入队队空:front==rear队满:front==rear队空、队满无法判断:1.另外设一个标志以区别2.少用一个元素空间:队空:front==rear

队满:(rear+1)%M==front队空:Q.front=Q.rear队满:Q.front=(Q.rear+1)%maxSize入队:Q.rear=(Q.rear+1)%maxSize出队:Q.front=(front+1)%maxSize;求队长:(Q.rear-Q.front+maxSize)%maxSize循环队列1)进队列算法(1)检查队列是否已满,若队满,则溢出错误;(2)将新元素赋给队尾指针所指单元;(3)将队尾指针后移一个位置(即加1)。2)出队列算法(1)检查队列是否为空,若队空,则下溢错误;(2)取队首元素的值。(3)将队首指针后移一个位置(即加1);循环队列的基本运算实现null*qq.frontq.rear非空队列q.frontq.rearnull空队列*q3.4.2链队列链队列示意图

和顺序队列类似,我们也是将这两个指针封装在一起,将链队列的类型LinkQueue定义为一个结构类型:

typedef

struct

queuenode{

ElemTypedata;

struct

queuenode*next;}QueueNode;

typedefstruct{

QueueNode*front;

QueueNode*rear;}LinkQueue;

链队列的基本实现CPU资源的竞争问题。主机与外部设备之间速度不匹配的问题。服务、排队问题队列的应用讨论(代本章小结)线性表、栈与队的异同点相同点:逻辑结构相同,都是线性的;都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表(只是对插入、删除运算加以限制)。不同点:①运算规则不同,线性表为随机存取,而栈是只允许在一端进行插入和删除运算,因而是后进先出表

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论