数据结构实验报告总结设计题目:模拟计算器程序学生姓名:谢先斌系 别:计算机与通信工程学院专 业:计算机科学与技术班 级: 1 班学 号: 541007010144 指导教师:卢冰李晔XX 年 6 月 21 日郑州轻工业学院课 程 设 计 任 务 书题目 模拟计算器程序专 业 、 班 级计 算 机 科 学 与 技 术10-01班学 号541007010144 姓名 谢先斌主要内容:设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和 ABS函数的任意整型表达式进行求解。基本要求:要检查有关运算的条件,并对错误的条件产生报警。主要参考资料:严蔚敏吴伟民编著《数据结构 (C 语言版 ) 》 清华大学出版社第 44 页栈、第 52 页表达式求值完 成 期 限: XX 年 6 月 21 日指导教师签名:课程负责人签名:XX年 6 月 21 日一、 设计题目模拟计算器的程序设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和 ABS函数的任意整型表达式进行求解。设计要求:要检查有关运算的条件,并对错误的条件产生报警。二、 算法设计的思想本程序设计主要是应用了栈,利用栈的“先进后出”原理,建立了两个栈,分别为运算符栈pOStack 和运算数栈pDStack。算法的基本思想( 参考课本 p53 页) 是:(1) 首先置操作数栈为pDStack 空栈,表达式起始符为“ =”,位运算符栈的栈底元素; (2) 依次读入表达式中的每个字符,若是操作数则进入 pDStack 栈,若是运算符则和pOStack 栈的栈定运算符比较优先权后作相应操作,直到整个表达式求值完毕( 即pOStack 栈的栈定元素和当前读入的字符均为“=” ) 。三、 算法的流程图本程序的流程如下附图1 所示:附图 1 程序流程图四、 算法设计分析首先创建了两个栈:typedef struct OPStack //定义运算符栈{ char opStack; int top; }OPStack, *pOPStack; typedef struct DATAStack //定义运算数栈{ double stack; int top; }DATAStack, *pDATAStack; 来分别存放运算符和运算数。在两个结构体中均有一个 top 数据域,当top=-1 时,表示该站为空栈。定义一个Evaluateexpression_r()函数来完成函数运算的主要功能:读入表达式,并计算结果。以下是对该函数的分析:当一次运算开始时, 分别调用 InitpOPStack(pOPStack &pOStack) 函数和InitpDATAStack(pDATAStack &pDStack)函 数 分 别 对 运 算 符 栈 和 运 ...