后缀表达式求值

后缀表达式求值

ID:43848753

大小:52.42 KB

页数:9页

时间:2019-10-15

后缀表达式求值_第1页
后缀表达式求值_第2页
后缀表达式求值_第3页
后缀表达式求值_第4页
后缀表达式求值_第5页
资源描述:

《后缀表达式求值》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、数据结构实验报告评分满分——5分学号:2015111898姓名:许明华专业:计算机科学与技术知识范畴:栈与队列完成日期:2017年4月03日实验题目:后缀表达式求值实验内容及要求:从键盘输入后缀表达式(运算符和操作数建议以字符串形式输入,空格作为分隔符),计算并输出后缀表达式的求值结果。基本要求:实现+,-,*,/四个二元运算符;实现+,-两个一元运算符(即正、负号);操作数用整数表示。提高要求:输出对应的前缀表达式。每位同学可必须实现基本要求,可选择实现提高要求;程序可不处理表达式语法错误。实验

2、目的:掌握堆栈在表达式求值中的应用。数据结构设计简要描述:序言:这是本学期第三个实验,这个实验比较的基本要求是要我们求出一个已经按后缀表达式形式输入的值,除了之前的堆栈部分,新增了一部分就是判断操作数和运算符,并将操作数入栈,将运算符进行对应的操作数功能实现,并将结果入栈。数据结构简要设计:本实验主要可分为两个大的模块,一个是堆栈操作,另外一个就是后缀表达式求值操作。堆栈操作:用结构体类型名来创建用于保存操作数的堆栈,并实现判断栈空、栈满、栈初始化、入栈以及退栈等操作;后缀表达式求值操作:用str

3、ing类型定义一个字符串,并对其进行判断,是操作数就入栈,是运算符就进行运算,并保存结果。算法设计简要描述:9/9后缀表达式求值算法:用string类型定义一个字符串,并用一个switch来实现运算符的操作和操作数的入栈,再用一个while来进行循环遍历整个字符串,直到字符串的末尾为止。最后将算得最终结果退栈,并打印到屏幕上即可。输入/输出设计简要描述:输入:从键盘上输入一个已经排好序的后缀表达式,如12-82-74-/*输出:屏幕上将输出后缀表达式的值,如上面表达式的值为6编程语言说明:1,编程

4、软件,CodeBlocks16.0;2,代码均用C++语言实现;3,输入输出采用C++语言的cout和cin函数;4,程序注释采用C/C++规范;主要函数说明:voidInitStack(Stack*s);//栈的初始化intEmptyStack(Stack*s);//判断栈空intfull(Stack*s);//判断栈满intpush(Stack*s,elemtypex);//入栈操作intpop(Stack*s,elemtype&x);//退栈操作intresult(strings);//后缀

5、表达式求值程序测试简要报告:见截图:1,2,9/9源程序代码:#include#includeusingnamespacestd;typedefintelemtype;//整数型数据类型typedefstruct{elemtype*elem;intlength;inttop;}Stack;//函数声明voidInitStack(Stack*s);//栈的初始化intEmptyStack(Stack*s);//判断栈空intfull(Stack*s);//判断

6、栈满intpush(Stack*s,elemtypex);//入栈操作intpop(Stack*s,elemtype&x);//退栈操作intresult(strings);//后缀表达式求值9/9//函数具体实现//顺序存储的栈结构,以及其相应算法voidInitStack(Stack*s){s->length=100;s->elem=(elemtype*)malloc((sizeof(elemtype)*s->length));s->top=-1;}//判断栈是否为空intEmptyStack

7、(Stack*s){returns->top==-1;}//判断栈满intfull(Stack*s){returns->top>=s->length-1;}//入栈intpush(Stack*s,elemtypex){if(full(s))9/9{return0;}s->elem[++s->top]=x;return1;}//退栈intpop(Stack*s,elemtype&x){if(EmptyStack(s)){return0;}x=s->elem[s->top--];return1;}//

8、后缀表达式求值函数intresult(strings){intResult;//定义一个保存输出结果的值Stack*p;//建栈9/9p=(Stack*)malloc(sizeof(Stack));//为新建的栈分配内存空间InitStack(p);//初始化刚建的栈,这一步不进行的话,入栈将不能进行,之前这个问题将我难到了好久inti=0;//定义一个字符串下标,用来循环判断字符串中的内容elemtypea,b,d;//定义三个elemtype类型变量,用来进行操作数的实现whi

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

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

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