收藏 分享(赏)

大赛精美PPT课件.ppt

上传人:kuailexingkong 文档编号:1723796 上传时间:2018-08-19 格式:PPT 页数:21 大小:5.93MB
下载 相关 举报
大赛精美PPT课件.ppt_第1页
第1页 / 共21页
大赛精美PPT课件.ppt_第2页
第2页 / 共21页
大赛精美PPT课件.ppt_第3页
第3页 / 共21页
大赛精美PPT课件.ppt_第4页
第4页 / 共21页
大赛精美PPT课件.ppt_第5页
第5页 / 共21页
点击查看更多>>
资源描述

1、READY?,Now Loading,院系:信息工程学院 班级:信息管理与信息系统 姓名:xxx,数据结构,ppt课件,LOGO,第一节 队列,队列是限定只能在表的一端插入元素,在表的另一端删除元素的线性数据结构。允许插入元素的一端称队尾(rear),允许删除元素的另一端称队头(front)。若队列中无元素,则称为空队列。若给定队列Q=(a0,a1,an1),则称a0是队头元素, an1是队尾元素。若元素a0,an1依次入队列,则元素出队列的次序与入队列一致,a0出队列后,a1才能出队列,见图3-4。由于队列的这种先进先出的特点,因此队列是先进先出(First In First OutFIFO

2、)的线性数据结构。,.队列ADT,队列的顺序表示,图34 队列示意图, a(1) a(2) a(3) a(n-1) ,Append(入队列),Serve (出队列),Front(队头),Rear (队尾),队列的基本运算包括构造一个空队列,判定一个队列是否为空队列,判定一个队列是否已满,在一个未满的队列中插入一个新元素,从一个非空的队列中删除队头元素等。当然我们还可以根据应用需要增加其它必要的队列运算,如求队列的长度,清除一个队列,以及遍历一个队列等。队列的抽象数据类型定义见ADT 32。,ADT 32 Queue 数据:零个或多个元素的线性序列(a0,a1,.,an1),其最大允许长度为ax

3、Queue。 运算:void CreateQueue(Queue * q,int maxsize);已构造一个空队列。BOOL IsEmpty(Queue q)若队列为空,则返回TRUE,否则返回FALSE。,BOOL IsFull(Queue q) 若队列已满,则返回TRUE,否则返回FALSE。void Append(Queue *q, T x) 若队列已满,则指示Overflow,否则值为x的新元素进队列。 void Serve(Queue *q) 若队列为空,则指示Underflow,否则从队列中删除队头元素。 void QueueFront(Queue q,T* x) 若队列为空,则

4、指示Underflow,否则在参数x中返回队头元素值。 ,.队列ADT,队列的顺序表示,与堆栈一样,队列可以采用顺序存储,也可以采用链接存储。当我们用一维数组存储队列时,被称为顺序队列(sequential queue),图35是队列的顺序表示示意图。队列的链接表示在下一小节讨论。队列的顺序实现可以用下面的C语言结构定义: typedef struct queueint Front,Rear,MaxQueue;T ElementsMaxSize; Queue,队列运算需要两个指针,Front指向队头元素,Rear指向队尾元素。MaxQueue为队列的最大允许长度,它应不大于整型常量MaxSiz

5、e。一维数组Elments用以存放队列中的元素,实现队列的顺序存储。初始状态下,我们将Front和Rear两个指针均置成1,代表空队列,见图36(a)。图中,f和r分别代表Front和Rear。,图36 入队列和出队列运算的简单实现 空队列;(b) 元素20、30、40、50依次进队列; (c) 元素20、30、40依次出队列;(d) 元素60入队列,初始状态下,我们将Front和Rear两指针均置成0。为了循环使用数组,可以利用取余运算符%计算新元素的插入位置(即新队尾元素的位置)和删除队头元素后的新队头元素的 位置。队头指针进一操作:Front=(Front+1) % MaxQueue;队

6、尾指针进一操作:Rear=(Rear+1) % MaxQueue;我们看到,指针Front和Rear始终以顺时针方向移动。,初始状态下,我们将Front和Rear两指针均置成0。为了循环使用数组,可以利用取余运算符%计算新元素的插入位置(即新队尾元素的位置)和删除队头元素后的新队头元素的 位置。队头指针进一操作:Front=(Front+1) % MaxQueue;队尾指针进一操作:Rear=(Rear+1) % MaxQueue;我们看到,指针Front和Rear始终以顺时针方向移动。,程序33循环队列实现 void CreateQueue(Queue *q,int maxsize)q-Fr

7、ont=q-Rear=0;q-MaxQueue=maxsize;BOOL IsEmpty(Queue q)return q.Front=q.Rear;BOOL IsFull(Queue q),return (q.Rear+1) % q.MaxQueue=q.Front;void Append(Queue* q, T x)if ( IsFull(*q) printf(“Overflow“);else q-Elementsq-Rear=(q-Rear+1)%q-MaxQueue=x;void Serve(Queue* q),if (IsEmpty(*q)printf(“Underflow“);else q-Front=(q-Front+1)% q-MaxQueue;void QueueFront(Queue q,T* x)if (IsEmpty(q) printf(“Underflow“);else *x=q.Elements(q.Front+1)% q.MaxQueue;,

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报