- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 栈和队列 3.1 栈(stack) 栈的定义和特点 定义:限定仅在表尾进行插入(进栈)或删除( 出栈)操作的线性表,表尾—栈顶,表头—栈底,不含元素的空表称空栈。 基于特点给出以下问题: ? 若进栈序列为ABCDEF,能否得到 DCEFAB和ACEDBF出栈序列. ? 以0和1分别表示进栈和出栈,栈的 初态和终态均为栈空,进出栈操作 序列0101和0110是否合法. 顺序栈 实现:一维数组sqstack s 表示栈 3.2 栈的应用 3.2.1 数制转换 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 一种表达式求值的算法思想(算符优先法): 将运算符和界限符统称为算符,用OPTR栈存储算符, 用OPND栈存储运算结果和操作数.设OPTR栈顶元素为 θ1,算法实现步骤为: 1.OPND栈置空,OPTR栈底元素置为’#”.表达式尾 置为’#”. 2.依此读入表达式字符,若是操作数一律进OPND栈, 若是算符则设为θ2,参照P53表3.1进行以下比较: 若θ2 θ1,则θ2 进OPTR栈,继续2 若θ2 ≡θ1则OPTR栈顶出栈(括弧配对),继续2 若θ2 θ1则OPTR栈顶出栈作为运算符(OP),同时OPND栈连续出二个元素作为S2和S1进行 S1 OP S2 运算,结果进OPND栈,继续2. 结束条件是 θ2 =θ1 例:3 * ( 7 – 2 ) OPTR栈 OPND栈 输入 操作 1 # 3 * ( 7 – 2 ) # PUSH( OPND, ‘3’ ) 2 # 3 * ( 7 – 2 ) # PUSH( OPTR, ‘*’ ) 3 # * 3 ( 7 – 2 ) # PUSH( OPTR, ‘(’ ) 4 # * ( 3 7 – 2 ) # PUSH( OPND, ‘7’ ) 5 # * ( 3 7 – 2 ) # PUSH( OPTR, ‘–’ ) 6 # * (– 3 7 2 ) # PHSH( OPND, ‘2’ ) 7 # * (– 3 7 2 ) # operate( ‘7’,’-’,’2’ ) 8 # * ( 3 5 ) # POP( OPTR ) 9 # * 3 5 # operate( ‘3’, ‘*’, ‘5’ ) 10 # 15 # return GetTop( OPND ) 3.3 栈与递归的实现 递归的概念: 一个直接调用自己或通过一系列的调用语句调用自己 的函数,称为递归函数. 具有递归特征的问题可分为以下几类: 1. 数学函数本身是递归定义的,如阶乘函数、 Fibonacci 数列和Ackerman 函数等. 2. 有些数据结构本身具有递归特征,如二叉树,广义表
您可能关注的文档
最近下载
- 四川省成都市金牛区2024-2025学年七上数学期末试卷(解析版).docx VIP
- 人形机器人系列报告(二):人形机器人末端执行器,灵巧手产业化加速落地.pdf VIP
- 基于义务教育课程标准的(冀教2024版)八年级英语上册内容解读 课件(新教材).pptx
- 胸外科2026年度工作计划.docx
- 汽车底盘构造与维修课件作者多晓莉子模块四(制动系)信息资料单四气压制动传动机构.ppt VIP
- 食材采购投标方案.docx VIP
- CJJ11-2011 城市桥梁设计规范.docx VIP
- 钢筋混凝土灌注桩施工安全技术交底..doc VIP
- 【常考压轴题】比例线段及黄金分割点压轴题型-2023-2024学年九年级数学上册(沪教版)(解析版).pdf VIP
- 抗日民族英雄杨靖宇.pptx VIP
原创力文档


文档评论(0)