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

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

ID:47044773

大小:86.50 KB

页数:10页

时间:2019-07-07

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

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

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

2、数voidChange(char*S1,char*S2)及主函数,在主函数中进行输入输出及转换函数的调用。2.选做:编写利用栈对后缀表达式进行求值的函数doubleCompute(char*str),以计算从前述程序得到的后缀表达式的值。要求:把栈的基本操作的实现函数存放在头文件stack2.h中(栈元素的类型为double),在主文件test6_2.cpp中添加后缀表达式求值函数,并在主函数中增加调用求值函数及输出结果值的语句。3.填写实验报告,实验报告文件取名为report2.doc。4.上传实验报告文件report2.doc与源程序文件stack1.h、stack2.h(若有)及t

3、est6_2.cpp到Ftp服务器上你自己的文件夹下。二.函数的功能说明及算法思路(算法思路见源程序的注释部分)//栈的顺序存储结构定义structStack{ElemType*stack;inttop;intMaxSize;};//初始化栈S为空voidInitStack(Stack&S)//元素item进栈,即插入到栈顶voidPush(Stack&S,ElemTypeitem)//删除栈顶元素并返回ElemTypePop(Stack&S)//读取栈顶元素的值ElemTypePeek(Stack&S)//判断S是否为空,若是则返回true,否则返回falseboolEmptyStac

4、k(Stack&S)//清除栈S中的所有元素,释放动态存储空间voidClearStack(Stack&S)//将中缀算术表达式转换为后缀算术表达式voidChange(char*S1,char*&S2)//返回运算符op所对应的优先级数值intPrecedence(charop)//计算由str所指字符串的后缀表达式的值doubleCompute(char*str)四.实验结果与分析五.心得体会【附录----源程序】test6_2.cpp#include#include#include#include"stack1.h"#in

5、clude"stack2.h"voidmain(){charx[30],y[30];doubler;while(1){cout<<"请输入一个中缀算术表达式:";cin.getline(x,sizeof(x));Change(x,y);cout<<"对应的后缀算术表达式为:";cout<

6、ck1&S){S.MaxSize=10;S.stack=newElemType1[S.MaxSize];if(!S.stack){cerr<<"动态储存分配失败"<

7、1Pop(Stack1&S){if(S.top==-1){cerr<<"Stackisempty!"<

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

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

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