(编译原理)逆波兰式算法的源代码

上传人:jiups****uk12 文档编号:48501039 上传时间:2018-07-16 格式:DOC 页数:8 大小:88.50KB
返回 下载 相关 举报
(编译原理)逆波兰式算法的源代码_第1页
第1页 / 共8页
(编译原理)逆波兰式算法的源代码_第2页
第2页 / 共8页
(编译原理)逆波兰式算法的源代码_第3页
第3页 / 共8页
(编译原理)逆波兰式算法的源代码_第4页
第4页 / 共8页
(编译原理)逆波兰式算法的源代码_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《(编译原理)逆波兰式算法的源代码》由会员分享,可在线阅读,更多相关《(编译原理)逆波兰式算法的源代码(8页珍藏版)》请在金锄头文库上搜索。

1、一.实验目的1 深入理解算符优先分析法2 掌握 FirstVt 和 LastVt 集合的求法有算符优先关系表的求法3 掌握利用算符优先分析法完成中缀表达式到逆波兰式的转化二.实验内容及要求将非后缀式用来表示的算术表达式转换为用逆波兰式来表示的算术表达式,并计算用逆波兰式来表示的算术表达式的值。程序输入/输出示例:输出的格式如下:(1)逆波兰式的生成及计算程序,编制人:姓名,学号,班级(2)输入一以#结束的中缀表达式(包括+*/()数字#):在此位置输入符号串如(28+68)*2#(3)逆波兰式为:28 /*存储后缀表达式*/读入一个逆波兰算术表达式sym=当前输入符号sym 是运算符吗?将该字

2、符入栈根据运算符的特点从栈顶部取 出若干个运算对象进行该运算 将运算结果入栈程序结束否是Sym=#否是void trans() /*将算术表达式转化为后缀表达式*/char strmax; /*存储原算术表达式*/char stackmax; /*作为栈使用*/char ch;int sum,i,j,t,top=0;printf(“*n“);printf(“*输入一个求值的表达式,以#结束。*n“);printf(“*n“);printf(“算数表达式:“);i=0; /*获取用户输入的表达式*/doi+;scanf(“%c“,while(stri!=# sum=i;t=1;i=1;ch=st

3、ri;i+;while(ch!=#)switch(ch)case (: /*判定为左括号*/top+;stacktop=ch;break;case ): /*判定为右括号*/while(stacktop!=()ext=stacktop;top-;t+;top-;break;case +: /*判定为加减号*/case -: while(top!=0top-;t+;top+;stacktop=ch;break;case *: /*判定为乘除号*/case /:while(stacktop=*|stacktop=/)ext=stacktop;top-;t+;top+;stacktop=ch;break;case :break;default:while(ch=0 /*将数字字符转化为对应的数值*/ ch=ext;t+;top+;stacktop=d;ch=ext;t+;printf(“nt 计算结果:%gn“,stacktop);main()trans();compvalue();5.程序的运行结果如下:程序的运行结果如下:四.实验总结(心得)通过本实验的学习,主要掌握了逆波兰式算法的含义,结合书本知识,让我更加清楚此算法实现的主要过程,以及使用该算法的好处,通过对程序实现的分析,对于逆波兰式算法的细节了解的更加清楚,从中学到了很多的东西。

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号