实验2 栈的应用-算术表达式计算

实验2 栈的应用-算术表达式计算

ID:13540317

大小:98.00 KB

页数:8页

时间:2018-07-23

实验2 栈的应用-算术表达式计算_第1页
实验2 栈的应用-算术表达式计算_第2页
实验2 栈的应用-算术表达式计算_第3页
实验2 栈的应用-算术表达式计算_第4页
实验2 栈的应用-算术表达式计算_第5页
资源描述:

《实验2 栈的应用-算术表达式计算》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、浙江大学城市学院实验报告课程名称数据结构与算法实验项目名称实验二栈的应用---算术表达式的计算学生姓名蓝礼巍专业班级学号实验成绩指导老师(签名)日期一.实验目的和要求1.进一步掌握栈的基本操作的实现。2.掌握栈在算术表达式的计算方面的应用。二.实验内容1.编写程序利用栈将中缀表达式转换成后缀表达式,即从键盘输入任一个中缀表达式(字符串形式),转换成后缀表达式后,将后缀表达式输出。假设:中缀表达式包含圆括号()及双目运算符+、-、*、/、^(乘方)。要求:把栈的基本操作的实现函数存放在头文件stack1.h

2、中(栈元素的类型为char),在主文件test6_2.cpp中包含将中缀表达式S1转换成后缀表达式S2的转换函数voidChange(char*S1,char*S2)及主函数,在主函数中进行输入输出及转换函数的调用。2.选做:编写利用栈对后缀表达式进行求值的函数doubleCompute(char*str),以计算从前述程序得到的后缀表达式的值。要求:把栈的基本操作的实现函数存放在头文件stack2.h中(栈元素的类型为double),在主文件test6_2.cpp中添加后缀表达式求值函数,并在主函数中增

3、加调用求值函数及输出结果值的语句。3.填写实验报告,实验报告文件取名为report2.doc。4.上传实验报告文件report2.doc与源程序文件stack1.h、stack2.h(若有)及test6_2.cpp到Ftp服务器上你自己的文件夹下。三.函数的功能说明及算法思路包括每个函数的功能说明,及一些重要函数的算法实现思路VoidInitStack2(Stack2&S)初始化voidPush(Stack1&S,ElemType1item)元素插入ElemType1Pop(Stack1&S)删除栈顶并返

4、回ElemType1Peek(Stack1&S)读取元素boolEmptyStack(Stack1&S)判断是否为空voidClearStack(Stack1&S)清除栈四.实验结果与分析包括运行结果截图等五.心得体会记录实验感受、上机过程中遇到的困难及解决办法、遗留的问题、意见和建议等。【附录----源程序】Cpp:#include#include#includetypedefcharElemType1;structStack1{ElemTy

5、pe1*stack;inttop;intMaxSize;};#include"stack1.h"typedefdoubleElemType2;structStack2{ElemType2*stack;inttop;intMaxSize;};#include"stack2.h"intprecedence(charop){switch(op){case'+':case'-':return1;case'*':case'/':return2;case'(':case'@':default:return0;}}vo

6、idChange(char*S1,char*S2){Stack1R;InitStack(R);Push(R,'@');inti=0,j=0;charch=S1[i];while(ch!=''){if(ch=='')ch=S1[++i];elseif(ch=='('){Push(R,ch);ch=S1[++i];}elseif(ch==')'){while(Peek(R)!='(')S2[j++]=Pop(R);Pop(R);ch=S1[++i];}elseif(ch=='+'

7、

8、ch=='-'

9、

10、ch

11、=='*'

12、

13、ch=='/'){charw=Peek(R);while(precedence(w)>=precedence(ch)){S2[j++]=w;Pop(R);w=Peek(R);}Push(R,ch);ch=S1[++i];}else{if((ch<'0'

14、

15、ch>'9')&&ch!='.'){cout<<"中缀表达式错误!"<='0'&&ch<='9')

16、

17、ch=='.'){S2[j++]=ch;ch=S1[++i];}S2[j++]='';}

18、}ch=Pop(R);while(ch!='@'){if(ch=='('){cerr<<"expressionerror!"<

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。