- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
带头结点的链式队列出队算法 算法3-20 算法描述 (1) 算法分析 (2) Delete_Lq(Lq_front, Lq_rear, x) { if (Lq_front == Lq_rear) printf (The linked queue is empty!) ; else { ①ptr = Lq_front-Next ; ②x = ptr-Data ; ③Lq_front-Next = ptr-Next ; if (ptr-Next == NULL) ④Lq_rear = Lq_front ; ⑤free (ptr); } } . 出队操作时先要判断队列是否为空,判断链式队列为空的条件是: Lq_front == Lq_rear . 出队操作中,需注意原队列里只有一个元素的情形,即当条件: ptr-Next == NULL 成立时,删除该元素后要调整Lq_rear,让它指向队列的头结点,否则它就 “悬空”了。 下图所示为原先队列里只有一个元素a1时,删除它的①~⑤步操作过程示意。 . 链式队列Lq Lq_front : Lq_rear: (头结点) ∧ a1 ∧ ③ Lq_front-Next=ptr-Next ① ptr=Lq_front-Next x ④ Lq_rear=Lq_front × ptr ② x=ptr-Data ⑤ free(ptr) × 在队列里只有一个数据结点时,做出队操作就要对指针Lq_rear进行调整,以便让它指向头结点。可用改进的算法Delete_Lq1(),来避免队尾指针的调整。 算法讨论 (3) . Delete_Lq1(Lq_front, Lq_rear, x) { if (Lq_front == Lq_rear) printf (The linked queue is empty!) ; else { ①ptr = Lq_front ; ②Lq_front = Lq_front-Next ; ③free (ptr); ④x = Lq_front-Data ; } } 该算法只修改链式队列首指针Lq_front,不动尾指针Lq_rear。具体地,出队时删除头结点,把要出队的队首元素结点改为头结点。这样一来,即使原来队列里只有一个数据元素,也不用修改队尾指针Lq_rear。 . 下图是链式队列里只有一个数据结点时,出队操作的实施步骤 。 . 下图是一般链式队列出队操作的实施步骤 。 . Lq Lq_front : Lq_rear: (新的头结点) ∧ x ① ptr=Lq_front ② Lq_front=Lq_front-Next ③ free(ptr) ptr ④ x=Lq_front-Data × a1 Lq Lq_front : Lq_rear: (新的头结点) x ① ptr=Lq_front ② Lq_front=Lq_front-Next ③ free(ptr) ptr ④ x=Lq_front-Data × a1 a2 ∧ a3 (原头结点) (原头结点) 所谓“算术表达式”,是指用算术运算符将操作数连接起来组成的式子。算术表达式求值,是程序设计语言编译时必须解决的一个基本问题。 3.3.1 在算术表达式求值中使用堆栈 . 算术表达式的概念 1. . 常见的算术表达式的特点是运算符被置于两个操作数的中间,按“先括号内后括号外”、“先乘除后加减”、“同级运算先左后右”的运算规则进行求值。这种“运算符被置于两个操作数中间”形式的算术表达式,称之为是“中缀表达式”。 . 算术表达式还有前缀和后缀两种形式。如果将运算符放于两个操作数的前面,那就是“前缀表达式”。如果将运算符放于两个操作数的后面,那就是“后缀表达式”。 后缀表达式的特点是没有括号,没有运算符间的优先级,计算完全按照运算符出现的先后次序进行。因此,在语言编译系统里,总是先把中缀表达式转为后缀表达式,然后对后缀表达式进行一遍扫描,求得其结果。 . 我们不去探究如何利用堆栈把中缀表达式转换为后缀表达式,然后再求表达式值的问题。我们在此只是简单地介绍在中缀表达式的基础上,如何通过堆栈能够求得它的值。 . 在栈开始工作前,往op栈底放一个特殊的运算符,比如“#”,规定它的优先级为最低,以便扫描表达式时,遇到的第1个运算符可以顺利进
您可能关注的文档
- 数据结构与算法王曙燕chapter8查找课件教学.ppt
- 数据结构与算法王曙燕chapter9排序课件教学.ppt
- 数据结构与算法第3版张小莉第1章绪论课件教学.ppt
- 数据结构与算法第3版张小莉第2章基本线性结构课件教学.ppt
- 数据结构与算法第3版张小莉第3章线性结构的扩展课件教学.ppt
- 数据结构与算法第3版张小莉第4章树结构课件教学.ppt
- 数据结构与算法第3版张小莉第6章查找课件教学.ppt
- 数据结构与算法第3版张小莉第7章排序课件教学.ppt
- 数据结构与算法第3版张小莉第8章扩展应用举例课件教学.ppt
- 数据结构周屹任义主编第1章课件教学.ppt
- 数据结构第2版宗大华陈吉人数据结构课件-4课件教学.ppt
- 数据结构第2版宗大华陈吉人数据结构课件-5课件教学.ppt
- 数据结构第2版宗大华陈吉人数据结构课件-6课件教学.ppt
- 数据结构第2版宗大华陈吉人数据结构课件-7课件教学.ppt
- 数据结构第2版宗大华陈吉人数据结构课件-8课件教学.ppt
- 数据结构第2版宗大华陈吉人数据结构课件-9课件教学.ppt
- 数据结构纪颖中国机械工业教育协会组编数据结构课件教学.ppt
- 数据结构纪颖中国机械工业教育协会组编第1章绪论课件教学.ppt
- 数据结构纪颖中国机械工业教育协会组编第2章线性表课件教学.ppt
- 数据结构纪颖中国机械工业教育协会组编第3章链接表课件教学.ppt
最近下载
- 一种磷酸氢二钠的分离纯化方法.pdf VIP
- 课程思政汇报PPT模板.pptx VIP
- 2025最新版初中历史新课标《义务教育历史课程标准》学习解读.pptx VIP
- 快乐读书吧《笑与泪,经历与成长》优质课教学设计.docx VIP
- 南京邮电大学网络工程专业特色专业申报书.doc VIP
- 《中国旅游地理》课程标准.docx VIP
- 绿色简约风乡村振兴建设家园PPT模板.pptx VIP
- 烟雾病和烟雾综合征临床管理指南(2025版).pptx VIP
- 2025年广西职业院校技能大赛高职组(康复治疗技术赛项)参考试题库及答案.docx VIP
- (高清版)DB50∕T 1279-2022 民用醇基液体燃料应用技术规程.pdf VIP
原创力文档


文档评论(0)