资源描述:
《实验六:表达式的值》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
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="<