1、 数据结构 实验报告 - 1 -电子信息学院实 验 报 告 书课 程 名 : 数据结构 题 目: 后缀表达式求值 实验类别 自主设计实验 班 级: BX1206 学 号: 23 姓 名: 张善干 评语:实验态度:认真( ) 一般( ) 差( )实验结果:正确( ) 部分正确( )错( )实验理论:掌握( ) 熟悉( ) 了解( ) 不懂( )操作技能:强( ) 一般( ) 差( )实验报告:好( ) 一般( ) 差( )成绩: 指导教师: 批阅时间: 年 月 日数据结构 实验报告 - 2 -1、 实验目的(1) 掌握栈“后进先出”的特点(2) 掌握栈的典型应用后缀表达式求值2、实验内容与要求(
2、1) 从键盘输入一个整数后缀表达式(操作数的范围是 09,运算符只含+、-、*、/,而且中间不可以有空格) ,使用循环程序从左向右读入表达式。(2) 如果读数是操作数,直接进入操作数栈。(3) 如果读入的是运算符,立即从操作数栈取出所需的操作数,计算操作数运算的值,并将计算结果存回操作数栈。(4) 检验程序运行结果(5) 分析后缀表达式求值的算法思想,利用 C(或 C+)语言完成算法设计和程序设计。(2)上机调试通过实验程序。(3)给出具体的算法分析,包括时间复杂度和空间复杂度等。(5)撰写实验报告。3、实验步骤与源程序一、源程序代码:#include#define Maxlen 20type
3、def struct char dataMaxlen;int top; opstack; typedef struct float dataMaxlen;int top;stack;float compvalue(char exp) stack st;float d; 数据结构 实验报告 - 3 -char ch;int t=0;st.top=-1;ch=expt+;while(ch!=0) switch(ch) case+:st.datast.top-1=st.datast.top-1+st.datast.top;st.top-;break;case-:st.datast.top-1=st.
4、datast.top-1-st.datast.top;st.top-;break;case*:st.datast.top-1=st.datast.top-1*st.datast.top;st.top-;break;case/:if(st.datast.top!=0) st.datast.top-1=st.datast.top-1/st.datast.top;st.top-;elseprintf(“nt 表达式中有除数为零,本次计算无效!n “);break;default: if(ch=0 st.top+;st.datast.top=d;ch=expt+;return st.datast.to
5、p;int main() char strMaxlen,expsMaxlen;printf(“n 请输入一个整数后缀表达式: “);gets(str); printf(“n 其运算的结果为: %gnn“,compvalue(exps);数据结构 实验报告 - 4 -2、运行结果。输入:3 4 5 6 8 +-/7*+运行如图:4、 结果分析与实验体会在完成程序调试后运行程序的时候犯了一些低级错误,在输入操作数的时候输入的数字超过了 09 的范围,导致运行结果出现提示表达式中出现零,重新审读题目后改正。本次自主设计实验要求对数据栈比较熟悉,清楚后缀表达式求值的算法思想。实验过程中还存在很多问题,例如对汇编语言实用不熟练,导致许多的问题。在同学的帮助下及查阅相关的资源完成了本次实验。