实验六:表达式的值

实验六:表达式的值

ID:39615676

大小:81.04 KB

页数:5页

时间:2019-07-07

实验六:表达式的值_第1页
实验六:表达式的值_第2页
实验六:表达式的值_第3页
实验六:表达式的值_第4页
实验六:表达式的值_第5页
资源描述:

《实验六:表达式的值》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、湖南农业大学信息科学技术学院学生实验报告姓名:年级专业班级日期年月日成绩课程名称数据结构实验名称利用栈的基本操作实现表达式的计算实验类型验证设计综合创新【实验目的、要求】(1)熟悉VC++的上机环境,掌握VC++语言的编程过程(2)会定义栈的存储结构(3)熟悉对栈的一些基本操作和具体的函数的定义和实现方法【实验内容】(1)实现顺序栈的相关运算(在一个程序中实现顺序表的建立、查找、插入、删除和输入操作)(2)利用栈的相关运算,编程实现一个表达式的计算【实验环境】(含主要设计设备、器材、软件等)运行VC++的电脑一台【实验步骤、

2、过程】(含原理图、流程图、关键代码,或实验过程中的记录、数据等)代码#include"Stack2.h"//链式栈类,模板#includechar*toPostfix(char*expstr)//将中缀表达式转换成后缀表达式{Stack2s1;//创建空栈,数据元素类型为charchar*poststr=newchar[strlen(expstr)+1];charout;inti=0,j=0;while(expstr[i]!=''){cout<<"expstr["<

3、pstr[i];switch(expstr[i]){case'+':case'-':while(!s1.isEmpty()&&s1.get()!='('){//遇见+、-运算符时,与栈顶元素比较poststr[j]=s1.pop();j++;}s1.push(expstr[i]);//当前运算符入栈i++;break;case'*':case'/':while(!s1.isEmpty()&&(s1.get()=='*'

4、

5、s1.get()=='/')){//遇见*、/运算符时,与栈顶元素比较poststr[j]=s1.pop

6、();j++;}s1.push(expstr[i]);//当前运算符入栈i++;break;case'(':s1.push(expstr[i]);//遇见左括号时,入栈i++;break;case')':out=s1.pop();//遇见右括号时,出栈while(!s1.isEmpty()&&out!='(')//判断出栈的是否为左括号{poststr[j]=out;j++;out=s1.pop();}i++;break;default:while(expstr[i]>='0'&&expstr[i]<='9'&&expstr

7、[i]!=''){//遇见数字时,加入到后缀表达式poststr[j]=expstr[i];i++;j++;}poststr[j]='';//数值之间以空格分隔j++;break;}poststr[j]='';cout<<"poststr="<

8、/计算后缀表达式的值{Stack2s2;//创建空栈,数据元素类型为intchar*p=poststr;intx,y,z=0;while(*p!='')//逐个检查后缀表达式中的字符{cout<<"*p="<<*p<<"";if(*p>='0'&&*p<='9')//遇到数字字符{z=0;while(*p!='')//字符串转化为数值{z=z*10+*p-'0';p++;}p++;s2.push(z);//z值入栈}else{if(*p!=''){y=s2.pop();//出栈两个值x=s2.pop();swi

9、tch(*p)//根据运算符,计算结果{case'+':z=x+y;break;case'-':z=x-y;break;case'*':z=x*y;break;case'/':z=x/y;break;}s2.push(z);//计算结果再次入栈}p++;}cout<

10、oPostfix="<

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

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

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