第3章 队列与堆栈ppt课件
47页1、3.2 栈的应用举例3.2.5 表达式求值,算符优先法: (4+2*3)-10/5 =(4+6)-10/5 = 10-10/5 =10-2 = 8 操作数(operand): 进OPND栈 操作符(operator): 进OPTR栈 界限符(delimiter): #、()等 #是我们设定的表达式开始和结束标识符。,算符间的优先关系:,1 2+-*/()# + - * / ( # =,Precede: 判定运算符栈的栈顶运算符1与读入的运算符2之间的优先关系的函数。 Operate: 进行二元运算ab的函数。 假定出现的表达式没有语法错误。,算法基本思想:,1、设置操作数栈OPND为空,表达式起始符#为运算符栈OPTR的栈底元素; 2、依次读入表达式中的每个字符,若是操作数则进OPND栈,若是运算符,则和OPTR栈的栈顶运算符比较优先权后做相应操作,直到整个表达式求值完毕。,算术表达式求值过程(算法3.4)OperandType EvaluateExpression(),InitStack(OPTR); Push(OPTR, #); InitStack(OPND); c = getch
2、ar(); while(c!=# | GetTop(OPTR)!=#) if(!In(c,OP) Push(OPND,c); c = getchar(); / 不是运算符则进栈 else switch(Precede(GetTop(OPTR),c) case : / 退栈并将运算结果入栈 Pop(OPTR,theta); Pop(OPND,b);Pop(OPND,a); Push(OPND,Operate(a,theta,b); break; default: printf(“Expression error!”); return(ERROR); / switch / while return GetTop(OPND); / EvaluateExpression,对算术表达式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 ) # Pus
3、h(OPND,7) 5 # * ( 3 7 - 2 ) # Push(OPTR,-) 6 # * ( - 3 7 2 ) # Push(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 栈与递归的实现,将所有的实在参数、返回地址等信息传递给被调用函数保存; 为被调用函数的局部变量分配存储区; 将控制转移到被调用函数的入口。,当在一个函数的运行期间调用另一个函数时,在运行该被调用函数之前,需先完成三项任务:,保存被调函数的计算结果; 释放被调函数的数据区; 依照被调函数保存的返回地址将控制转移到调用函数。,从被调用函数返回调用函数之前,应该完成下列三项任务:,多个函数嵌套调用的规则是:,此时的内存管理实行“栈式管理”,后调用先返回 !,例如: void main( ) void a( ) void b( ) a( ); b( ); /main / a / b,Main的数据区,函
4、数a的数据区,函数b的数据区,递归工作栈:递归过程执行过程中占用的 数据区。 递归工作记录:每一层的递归参数合成 一个记录。 当前活动记录:栈顶记录指示当前层的 执行情况。 当前环境指针:递归工作栈的栈顶指针。,递归函数执行的过程可视为同一函数进行嵌套调用,例如:,void hanoi (int n, char x, char y, char z) / 将塔座x上按直径由小到大且至上而下编号为1至n / 的n个圆盘按规则搬到塔座z上,y可用作辅助塔座。 1 if (n=1) 2 move(1,x , z); / 将编号为的圆盘从x移到z 3 else 4 hanoi(n-1, x, z, y); / 将x上编号为至n-1的 /圆盘移到y, z作辅助塔 5 move(n,x, z); / 将编号为n的圆盘从x移到z 6 hanoi(n-1, y, x, z); / 将y上编号为至n-1的 /圆盘移到z, x作辅助塔 7 8 ,8 3 a b c,返址 n x y z,5 2 a c b,5 1 a b c,7 1 c a b,void hanoi (int n, char x, char
《第3章 队列与堆栈ppt课件》由会员我***分享,可在线阅读,更多相关《第3章 队列与堆栈ppt课件》请在金锄头文库上搜索。
2020届中考英语备考复习-作文课件
2019年中考英语复习-专题十五-交际运用(试卷部分)课件
2019届二轮复习-高中英语-情态动词和虚拟语气课件
2019届一轮复习苏教版物质的跨膜运输课件
2019年北师大版英语单元复习课件::Unit17Laughter课件北师大版选修6
2021届新中考物理冲刺备考复习-力-弹力-重力课件
2019届一轮复习人教版种群的特征和数量变化课件
2020年高考地理一轮复习--等高线地形图-课件
2019版高考英语一轮复习-Unit-1-Living-well课件
2019届一轮复习人教版孟德尔的遗传定律——基因分离定律课件
2019届高三第二轮复习专题二万有引力定律及其应用课件
2020最新部编版语文五年级上册23-鸟的天堂课件含课后练习
2020版高考(浙江)一轮复习:第7讲-细胞呼吸课件
2020年新教材高中英语UNIT4HISTORYANDTRADITIONSSectionⅢDiscoveringUsefulStructures课件必修第二册
2019届高考历史二轮复习阶段三专题十三罗斯福新政与当代资本主义的新变化课件2
2019版高考生物二轮复习-专题三-细胞的生命历程-考点9-细胞分裂过程图像和坐标曲线的识别课件
(通史版)2021版高考历史一轮复习第4部分高考讲座(三)2高考非选择题(12分开放探究题)规范答题讲练课件
2019届高三地理复习第五讲--《区际联系与区域协调发展》课件
2021人教部编版历史九年级上册习题课件:第18课美国的独立
2020学年新教材高中英语Unit1FoodforthoughtPeriodTwoStartingout课件
2024-04-18 25页
2024-04-18 29页
2024-04-18 38页
2024-04-18 16页
2024-04-09 21页
2024-04-09 26页
2024-04-09 28页
2024-04-09 19页
2024-04-09 26页
2024-04-09 23页