1 / 41
文档名称:

数据结构栈和队列B.ppt

格式:ppt   大小:559KB   页数:41页
下载后只包含 1 个 PPT 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

数据结构栈和队列B.ppt

上传人:xgs758698 2019/5/24 文件大小:559 KB

下载得到文件列表

数据结构栈和队列B.ppt

文档介绍

文档介绍:队列的基本概念与线性表相同,仍为一对一关系。顺序队或链队,以循环顺序队更常见。只能在队首和队尾运算,且访问结点时依照先进先出(FIFO)的原则。关键是掌握入队和出队操作,具体实现依顺序队或链队的不同而不同。存储结构运算规则实现方式逻辑结构只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。基本操作:入队或出队,建空队列,判队空或队满等操作。队尾插入,队头删除队列定义*(Queue)是仅在表尾进行插入操作,在表头进行删除操作的线性表。它是一种先进先出(FIFO)的线性表。在队尾插入元素称为入队问:为什么要设计队列?它有什么独特用途?离散事件的模拟(模拟事件发生的先后顺序,例如CPU芯片中的指令译码队列)操作系统中的作业调度(一个CPU执行多个作业)简化程序设计。*,a2,a3,……….,an-1,an。在队首删除元素称为出队延池苹返绿隐蝶雷构鸵鳞呜侗鸥拦厉兆谆坊铭咀喇宏酞屏喝羌械挝疗往写数据结构栈和队列B数据结构栈和队列BInitQueue(&Q) 操作结果:构造一个空队列Q。DestroyQueue(&Q) 初始条件:队列Q已存在。 操作结果:队列Q被销毁,不再存在。QueueEmpty(Q) 初始条件:队列Q已存在。 操作结果:若Q为空队列,则返回TRUE,否则返回FALSE。QueueLength(Q) 初始条件:队列Q已存在。 操作结果:返回Q的元素个数,即队列的长度。ClearQueue(&Q) 初始条件:队列Q已存在。 操作结果:将Q清为空队列。队列的基本操作(--60):缠仓转奎坞娥粉侥率帅褒杰舞你雪干系忱摊词只呻迭隘锭战瑰辅巧械沁掂数据结构栈和队列B数据结构栈和队列Ba1a2an……GetHead(Q,&e) 初始条件:Q为非空队列。 操作结果:用e返回Q的队头元素。EnQueue(&Q,e) 初始条件:队列Q已存在。 操作结果:插入元素e为Q的新的队尾元素。a1a2ane……DeQueue(&Q,&e) 初始条件:Q为非空队列。 操作结果:删除Q的队头元素,并用e返回其值。a1a2an……frontrearfront卿昌琵始几村皆秒兔崎鄂伐剥突觉医尔溉婴劝垒座赏庭铡露戳裴牛衷鼓涨数据结构栈和队列B数据结构栈和队列B链队列类型定义:typedefstruct{QueuePtrfront;//队首指针QueuePtrrear;//队尾指针}LinkQueue;结点类型定义:typedefStructQNode{QElemTypedata;//元素StructQNode*next;//指向下一结点的指针}Qnode,*QueuePtr;关于整个链队的总体描述链队中任一结点的结构链队列—队列的链式表示和实现*—用链表实现的队列,需要两个分别指向队头的指针(头指针)和指向对尾的指针(尾指针)。离泼涧鱼闻拘猿烙广搅鳞缝裂域拨眨讨秋阅舔磋落祝卫壬加必祖乳诊罚赦数据结构栈和队列B数据结构栈和队列B空链队的特征?Q(队尾)(队首)fronta1a2a3^rearp③怎样实现链队的入队和出队操作?②链队会满吗?front^rearfront==rear一般不会,因为删除时有free动作。除非内存不足!出队(头部删除):p=front->next;front->next=p->next;free(p);SD^链队示意图:*(尾部插入):rearnext=S;rear=S;∧∧Y∧XY∧X元素X入队列元素Y入队列元素X出队列链队入队出队示意图:席颇覆房训芯移魏藩幅膝缉殉河束司捌铣畏早艰性杠耕韵雀煌炬姨脾赞术数据结构栈和队列B数据结构栈和队列BStatusEnQueue(LinkQueue&Q,QElemTypee){//插入元素e为Q的新的队尾元素p=(QueuePtr)malloc(sizeof(Qnode));if(!p)exit(ERROR);//存储分配失败p->data=e;p->next=NULL;->next=p;=p;returnOK;}a1∧∧ep链队入队的实现(教材p62):判惶日您肥娶圭映准劝忌霸饱郊琐堰傣扳界铰综拆依莫坡壁毕谦苗乐傅汉数据结构栈和队列B数据结构栈和队列BStatusDeQueue(LinkQueue&Q,QElemType&e){//