4-5-6栈和队列.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
4-5-6栈和队列

数据结构课程的内容 第三章 栈和队列 3.1 栈(Stack) 3.2 队列(Queue) 1. 定义 Q1:堆栈是什么?它与一般线性表有什么不同? Q2:顺序表和顺序栈的操作有何区别? Q3:什么叫“向上生成”的栈? “向下生成”又是何意? Q4:为什么要设计堆栈?它有什么独特用途? 例2(严题集3.1)一个栈的输入序列为1,2,3,若在入栈的过程中允许出栈,则可能得到的出栈序列是什么? 例3:一个栈的输入序列是12345,若在入栈的过程中允许出栈,则栈的输出序列43512可能实现吗?12345的输出呢? 例4: 设依次进入一个栈的元素序列为c,a,b,d,则可得到出栈的元素序列是: A)a,b,c,d B)c,d,a,b C)b,c,d,a D)a,c,d,b 顺序栈的入栈操作——例如用堆栈存放(A,B,C,D) 顺序栈出栈操作——例如从栈中取出‘B’ 链栈的入栈操作和出栈操作(教材省略) 栈的应用举例 第三章 栈和队列 3.1 栈(Stack) 3.2 队列 队的实现方式是本节重点,关键是掌握入队和出队操作。 具体实现依存储结构(链队或顺序队)的不同而不同。 1.链队列 2.顺序队 (A) r-f (B)(n+f-r)% n (C)n+r-f (D) (n+r-f)% n 本章小结 第3章作业 3.2 队列(Queue) 1. 定义 2. 逻辑结构 3. 存储结构 4. 运算规则 5. 实现方式 1. 定义 2. 逻辑结构 3. 存储结构 4. 运算规则 5. 实现方式 与线性表相同,仍为一对一关系。 顺序队或链队,以循环顺序队更常见。 只能在队首和队尾运算,且访问结点时依照先进先出(FIFO)的原则。 关键是掌握入队和出队操作,具体实现依顺序队或链队的不同而不同。 存储结构 运算规则 实现方式 逻辑结构 只能在表的一端进行插入运算,在表的另一端进行删除运算的线性表。 基本操作:入队或出队,建空队列,判队空或队满等操作。 尾部插入 首部删除 队列定义 队列 (Queue)是仅在表尾进行插入操作,在表头进行删除操作的线性表。它是一种先进先出(FIFO)的线性表。 例如:队列 Q= (a1 , a2 , a3 , ……….,an-1 , an ) 在队尾插入元素称为入队;在队首删除元素称为出队。 队首 队尾 问:为什么要设计队列?它有什么独特用途? 离散事件的模拟(模拟事件发生的先后顺序,例如 CPU芯片中的指令译码队列); 操作系统中的作业调度(一个CPU执行多个作业); 3. 简化程序设计。 答: 1. 链队列 2. 顺序队 队的抽象数据类型定义: ADT Queue{ 数据对象:D=…… 数据关系:R=…… 基本操作: …… } ADT Queue 建队、入队或出队、判队空或队满等,教材P59-60罗列了9种基本操作。 重点是循环顺序队 链队列类型定义: typedef struct { QueuePtr front ; //队首指针 QueuePtr rear ; //队尾指针 } LinkQueue; 结点类型定义: typedef Struct QNode{ QElemType data; //元素 Struct QNode *next; //指向下一结点的指针 }Qnode , * QueuePtr ; 关于整个链队的总体描述 链队中任一结点的结构 因简单而先介绍 讨论: 空链队的特征? Q (队尾) (队首) front a1 a2 a3 ^ rear p front ^ rear ③ 怎样实现链队的入队和出队操作? ② 链队会满吗? front=rear 一般不会,因为删除时有free动作。除非内存不足! 入队(尾部插入):rear-next=S; rear=S; 出队(头部删除):front-next=p-next; S D ^ 链队示意图: 完整操作函数见教材P62下 采用动态分配空间的形式 顺序队类型定义: 建队核心语句: q . base=(QElemType *)malloc(sizeof (QElemType ) * QUEUE_MAXSIZE); //分配空间 关于整个顺序队的总体描述 #define QUEUE-MAXSIZE 100 //最大队列长度 typedef struct { QElemType *base;

文档评论(0)

jgx3536 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:6111134150000003

1亿VIP精品文档

相关文档