- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第3章 栈和队列 求n的阶乘的非递归函数算法如下:用栈结构模拟递归求阶乘 void printpath (SeqStack *s) { DataType temp; printf ((%d,%d)--, M, N); while (! EmptySeqStack (s)) { PopSeqStack (s, temp); printf ((%d,%d)--, temp.x, temp.y); } printf(\n); } 表达式的表示方法 在计算机中,表达式可以有三种不同的表示方法。 设exp(表达式)为: S1(第一操作数) OP(运算符) S2(第二操作数) 则称 OP S1 S2为表达式的前缀表示法(波兰式); S1 OP S2为表达式的中缀表示法; S1 S2 OP为表达式的后缀表示法(逆波兰式) 。 例 已知中缀表达式=5+(4-3)*2 则前缀表达式为: +5*-432 后缀表达式为:543-2*+ 例3-3:表达式求值 注:波兰式由波兰逻辑学家 J.Lukasiewicz 1929年提出 说明: (1)中缀式的运算规则:先乘除,后加减;从左算到右;先括号内,后括号外。 (2)前缀式的运算规则:从右至左按运算符出现的顺序作运算,且取紧靠运算符之后的两个相邻的数作运算。 (3)后缀式的运算规则:从左至右按运算符出现的顺序作运算,且取紧靠运算符之前的两个相邻的数作运算。 中缀表达式(算符优先法)求值的基本思想: ① 操作数栈置为空栈,表达式起始符“#”为运算符栈的栈底元素。 ② 从左到右扫描表达式,依次读入表达式中每个字符。若所读字符为“#”,且操作符的栈顶元素也为“#”时,则输出操作数栈中的栈顶数据,即为运算的结果,结束处理。否则,进行下面处理。 ③ 若为操作数,入操作数栈;若为操作符,则要将当前操作符和操作符栈中的栈顶操作符进行优先级比较。若当前操作符级别高于栈中级别,操作符入栈,否则操作数栈顶两数出栈,操作符栈顶元素出栈执行此运算,结果操作数入栈,直至当前操作数级别大于栈顶级别止。 ⑴ 中缀表达式求值 ①算术表达式的后缀表示 后缀表达式:将运算符放在两个操作数的后面。如ab+ ②中缀表达式到后缀表达式的转换 先按中缀表达式的运算规则,找出当前要先运算的操作符和两个操作数,按转换规则得到该运算符相应的后缀表达式;再把这个后缀表达式当成是一个完整的操作数放在原表达式中;再找下一个运算符,重复以上操作至到处理完毕。如a+b*c-d/(e*f)的后缀式为:abc*+def*/- ⑵后缀表达式求值 ③后缀表达式的求值过程 对后缀表达式从左到右扫描,遇到运算符就把表达式中该运算符前面的两个操作数取出,用该运算符进行运算,并把结果带回后缀表达式,继续扫描下一字符,至到处理完毕。 ④后缀表达式的优点 无括号、不必考虑运算符的优先关系。 ⑤后缀表达式求值算法及其实用程序 设置一个堆栈来保存已经读到的操作数。从左到右扫描后缀表达式,若遇到的是操作数,则让操作数进栈;若遇到的是运算符,则就从栈顶依次弹出两个操作数,进行相应的运算后,再把结果压入栈;继续扫描下一个字符并处理,直到后缀表达式最后一个字符。位于栈顶的值就是表达式最后的计算结果。 求值程序 #define MAXN 100int compvale(pos_exp,p_x)char pos_exp[ ];float *p_x;{ float stack[MAXN], x;char c;int t, top;t=0;top=-1:c=pos_exp[t++];while (c!=‘\0’) { if (c=‘0’ c=‘9’) stack[++top]=‘c’-’0’; else switch(c) { case ‘+’:x=stack[top--]; stack[top]+=x; break; case ‘-’:x=stack[top--]; stack[top]-=x; break; case ‘*’:x=stack[top--]; stack[top]*=x; break; case ‘/’:if (stack[top]!=0) {
您可能关注的文档
最近下载
- 2025中国中医科学院中医药健康产业研究所 (江西中医药健康产业研究院) 招聘事业编制人员18人笔试备考试题及答案解析.docx VIP
- 预算编制的时间安排.pptx
- T∕COSOCC 014-2024 信息技术应用创新 经营管理系统数据管理技术规范.pdf VIP
- 《装备测试性工作通用要求GJB 2547B-2024》知识培训.pptx VIP
- 全电路欧姆定律.ppt VIP
- 王立群读《史记》之汉代风云人物——项羽 鸿门宴.doc VIP
- 小学与初中数学课程衔接的研究教学研究课题报告.docx
- 幕墙工程完整的清单报价.xls VIP
- 专题4平行线中的翻折求角度问题及角度之间的关系(原卷版+解析).docx VIP
- 版义务教育《艺术音乐课程标准》测试题含答案(荐).docx VIP
文档评论(0)