第三章堆栈和队列介绍.ppt

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
循环队列操作示意图 3.5 队列类型的实现 a5 a6 a7 a8 a10 a11 a12 a13 a14 a5 a6 a7 a8 a9 a10 a11 a12 a13 a5 a6 a7 a8 a9 0 1 2 3 4 5 6 7 8 9 front rear front rear rear front front rear 循环队列的状态问题 空队列条件: Q.rear = Q.front; 满队列条件: Q.rear = Q.front; 问题:如何区别队空和队满 有三种方法 1.牺牲一个存储空间 2.引入一个标志变量区别空和不空 3.使用计数器 3.5 队列类型的实现 InitQueue在循环队列中的实现 Status InitQueue (SqQueue Q) { // 构造一个空队列Q Q.base = (ElemType *) malloc (MAXQSIZE *sizeof (ElemType)); if (!Q.base) exit (OVERFLOW); // 存储分配失败 Q.front = Q.rear = 0; return OK; } 3.5 队列类型的实现 求队中元素个数 int SeQueueLength(SeQueue Q) {∥返回队列Q的元素个数 return (Q.rear- Q.front+MAXSIZE)%MAXSIZE; } 3.5 队列类型的实现 EnQueue在循环队列中的实现 Status EnQueue (SqQueue Q, ElemType e) { // 插入元素e为Q的新的队尾元素 if ((Q.rear+1) % MAXQSIZE == Q.front) return ERROR; //队列满 Q.base[Q.rear] = e; Q.rear = (Q.rear+1) % MAXQSIZE; return OK; } 3.5 队列类型的实现 DeQueue在双链表中的实现 Status DeQueue (SqQueue Q, ElemType e) { // 若队列不空,则删除Q的队头元素, // 用e返回其值,并返回OK; 否则返回ERROR if (Q.front == Q.rear) return ERROR; e = Q.base[Q.front]; Q.front = (Q.front+1) % MAXQSIZE; return OK; } 3.5 队列类型的实现 本章学习要点 1. 掌握栈和队列类型的特点,并能在相应的应用问题中正确选用它们。 2. 熟练掌握栈类型的两种实现方法,特别应注意栈满和栈空的条件以及它们的描述方法 3. 熟练掌握循环队列和链队列的基本操作实现算法,特别注意队满和队空的描述方法。 人有了知识,就会具备各种分析能力, 明辨是非的能力。 所以我们要勤恳读书,广泛阅读, 古人说“书中自有黄金屋。 ”通过阅读科技书籍,我们能丰富知识, 培养逻辑思维能力; 通过阅读文学作品,我们能提高文学鉴赏水平, 培养文学情趣; 通过阅读报刊,我们能增长见识,扩大自己的知识面。 有许多书籍还能培养我们的道德情操, 给我们巨大的精神力量, 鼓舞我们前进。 * 链栈 栈顶指针 ∧ a1 an 注意: 链栈中指针的方向 an-1 3.2 栈类型的实现 内容安排 3.1 栈的类型定义 3.2 栈类型的实现 3.3 栈的应用举例 3.4 队列的类型定义 3.5 队列类型的实现 例一 数制转换 算法基于原理: N = (N div d)×d + N mod d 例如:(1348)10 = (2504)8 ,其运算过程如下: 3.3 栈的应用举例 void conversion () { InitStack(S); scanf (%d,N); while (N) { Push(S, N % 8); N = N/8; } while (!StackEmpty(S)) { Pop(S,e); printf ( %d, e ); } } // conversion 编程实现 3.3 栈的应用举例 例二、 括号匹配的检验 假设在表达式中正确的格式为: ([]())或[([ ][ ])] 不正确的格式为 [( ])或([( ))或 (()]) 则 检验括号是否匹配的方法可用“期

文档评论(0)

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

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

1亿VIP精品文档

相关文档