网站大量收购独家精品文档,联系QQ:2885784924

数据结构第05周概论.ppt

  1. 1、本文档共19页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
如何判断循环队列的队空和队满? 队头指针进1:Q.front = (Q.front + 1)% MAXSIZE 队尾指针进1:Q.rear = (Q.rear + 1)% MAXSIZE 队列初始化:Q.front = Q.rear = 0; 队空条件:Q.front == Q.rear; 队满条件:(Q.rear + 1) % MAXSIZE == Q.front 队列长度:(Q.rear-Q.front+MAXSIZE)%MAXSIZE 练习题: 练习题: 练习题: 练习题: 链队q的动态变化过程 练习题: 线性表和栈、队列的比较 相同点:逻辑结构相同,都是线性的;都可以用顺序存储或链表存储;栈和队列是两种特殊的线性表,即受限的线性表(只是对插入、删除运算加以限制)。 不同点: ① 运算规则不同,线性表为随机存取,而栈是只允许在一端进行插入和删除运算,因而是后进先出表LIFO;队列是只允许在一端进行插入、另一端进行删除运算,因而是先进先出表FIFO。 ② 用途不同,线性表比较通用;栈用于函数调用、递归和简化设计等;队列用于离散事件模拟、多道作业处理和简化设计等。 * * 学习内容: 队列的定义 顺序队列 循环队列 链式队列 队列的应用实例 线性表、栈和队列的比较 栈与队列(下) 队列 ( Queue )的概念 定义:队列是只允许在一端删除,在另一端插入的线性表。允许删除的一端叫做队头(front),允许插入的一端叫做队尾(rear)。 特性:先进先出(FIFO, First In First Out) P76 顺序队列 队列的顺序存储结构简称为顺序队列。 由于队列的队头和队尾的位置均是变化的,因而要设立两个整型变量分别存储队首元素和队尾元素的下标位置,分别称它们为队首指针和队尾指针。 顺序队列操作示意图 从示意图看顺序队列的基本操作 ①进队时队尾指针rear = rear + 1,将新元素 按rear指示位置加入。 ②出队时队头指针front = front + 1,再将下标为front 的元素取出。 思考:上图中,元素再进队,将如何? 提示:将出现“假溢出”的现象。 假溢出:由于在入队和出队的操作中,头、 尾指针只增加不减小,致使被删除元素的空间无法重新利用,尽管队列中实际的元素个数远远小于存储空间的规模,但也可能出现由于尾指针已超出空间的上界而不能再做入队操作,此现象称为“假溢出” 。 循环队列:为了克服“假溢出”,将顺序队列想象为一个首尾相接的环状空间,称之为循环队列(Circular Queue) 。 解决: P77 0 1 2 3 4 5 rear front J5 J6 J7 0 1 2 3 4 5 rear front J4 J9 J8 J4 J5 J6 0 1 2 3 4 5 rear front 初始状态 J4,J5,J6出队 J7,J8,J9入队 队空:front==rear 队满:front==rear 解决方案: 1.另外设一个标志以区别队空、队满 2.少用一个元素空间: 队空:front==rear 队满:(rear+1)%M==front 1 循环队列存储在数组A[0..m]中,则入队的操作( )。 A rear=rear+1 B rear=(rear+1) mod (m-1) C rear=(rear+1) mod m D rear=(rear+1)mod(m+1) 2 若用一个大小为6的数组来实现循环队列,且当前rear和front的值分别为0和3,当从队列中删除一个元素,再加入两个元素后,rear和front的值分别为多少?( ) A. 1和5 B. 2和4 C. 4和2 D. 5和1 D B 3 最大容量为n的循环队列,队尾指针是rear,队头是front, 则队空的条件是( )。 A (rear+1) MOD n=front B rear=front C rear+1=front D (rear-l) MOD n=front 4 设栈S和队列Q的初始状态为空,元素e1e2e3e4e5和e6依次通过栈S,一个元素出栈后即进队列Q,若6个元素出队的序列是e2e4e3e6e5e1,则栈S的容量至少应该是( )。 A. 6 B. 4 C. 3 D. 2 B C 5 栈和队列都是( )。若进栈序列为1,2,3,4 则( )不可能是一个出栈序列(不一定全部进栈后再出栈

文档评论(0)

kehan123 + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档