欢迎来到天天文库
浏览记录
ID:10209251
大小:15.66 KB
页数:15页
时间:2018-06-12
《数据结构实验报告总结.doc》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、数据结构实验报告总结设计题目:模拟计算器程序 学生姓名:谢先斌 系别:计算机与通信工程学院 专业:计算机科学与技术 班级:1班 学号:541007010144 指导教师:卢冰李晔 XX年6月21日 郑州轻工业学院 课程设计任务书 题目模拟计算器程序 专业、班级计算机科学与技术10-01班学号541007010144姓名谢先斌 主要内容: 设计一个模拟计算器的程序,要求能对包含加、减、乘、除、括号运算符及SQR和ABS函数的任意烫整型表达式进行求解。 基蹦本要求: 要检查有关沉运算的条件,并对错误的簿条件产生报警。 主要参考食资料:
2、 严蔚敏吴伟民俞编著《数据结构(C语言迹版)》清华大学出版社第瑶44页栈、第52页表达性式求值 完成期限:XX年博6月21日 指导教师签名镑: 课程负责人签名: XX楔年6月21日 一、设计题筑目 模拟计算器的程序 健设计一个模拟计算器的程盎序,要求能对包含加、减耘、乘、除、括号运算符及中SQR和ABS函数的任缴意整型表达式进行求解。户 设计要求:要检查有惶关运算的条件,并对错误于的条件产生报警。 二、算令法设计的思想 本程序吊设计主要是应用了栈,利仓用栈的“先进后出”原理啦,建立了两个栈,分别为思运算符栈pOStack眩和运算数栈p
3、DStac窟k。算法的基本思想(参慎考课本p53页)是: 膘 (1)首先置操作数栈乔为pDStack空栈,缆表达式起始符为“=”,几位运算符栈的栈底元素;坊 (2)依次读入表达弦式中的每个字符,若是操谊作数则进入pDStac隘k栈,若是运算符则和p侗OStack栈的栈定运嘉算符比较优先权后作相应张操作,直到整个表达式求盛值完毕(即pOStac技k栈的栈定元素和当前读奖入的字符均为“=”)。懈 三、算法的流程图 本程序还的流程如下附图1所示:研 附图1程序流程图 四、算蔫法设计分析 首先创建了两欲个栈: typede谈fstructOPS
4、t恕ack//定义运算符栈羽 { charopStac辊k; inttop; }O膊PStack,*pOP极Stack; typ引edefstructD尸ATAStack//定数义运算数栈 { doubl沙estack; intt乙op; }DATAS诛tack,*pDATA袜Stack; 来分别熟存放运算符和运算数。在璃两个结构体中均有一个t邪op数据域,当top=瀑-1时,表示该站为空栈负。 定义一个Eval濒uateexpress教ion_r()函数来完绰成函数运算的主要功能:遮读入表达式,并计算结果樟。以下是对该函数的分析
5、驾: 当一次运算开始时逐,分别调用InitpO汰PStack(pOPS旭tackpOStack即)函数和InitpDA屿TAStack(pDA勿TAStackpDSt材ack)函数分别对运算石符栈和运算数栈进行初始供化。调用PushOPS娶tack(pOStac此k,'=')函数来完成恶运算符栈栈低元素的设置勘。 通过PushOP嘛Stack(pOPSt诛ackpOStack,寓charch)函数、 欣 PopOPStack富(pOPStackpO阀Stack,charc庭h)函数、 Push判DATAStack(p印DATASta
6、ckpD泳Stack,doubl帧ed)函数和PopDA眯TAStack(pDA蚀TAStackpDSt食ack,doubled邑)函数来分别完成运算符友和运输数的进出栈操作。撬getToppOPSt婿ack(pOPStac简kpOStack)函数扎和getToppDAT袖AStack(pDAT鄂AStackpDSta盛ck)函数主要是进行得匀到栈定元素的作用,特别思是在对运算符栈优先级的堑比较中十分重要,其中还悬会调用IsOP(cha狱rch)函数来区分读入嘘的是运算符还是运算数。略 ChangeCha袱r(charc)函数当夏每次读入一个
7、字符是都会蒸调用一次,主要的作用就吁是完成不用区分A、S的翅大小的功能。 Pre柿cede(charop竟1,charop2)函帮数主要是通过一个二维字枕符串数组来存放9种运算镐符的优先级比较的结果,奉每当读到一个运算符后就渊进行与运算符栈顶元素比猿较,通过返回的“、=”撅结果来进行下一步的操作乏:''表示运算符和运算争数各退栈一次并调用Op帮erate(doubl记ea,charthet妇a,doubleb)函锡数(主要是对出栈的运算笛符和运算数进行计算),芋最后将运算结果压入运算仁数栈pDStack。 飞 当操作结束时运算数栈雪的栈顶元
8、素就是计算结果点,分别调用Clearp掘OPStack(pOS屿tack)函数清空运算噎符栈、ClearpDA锐TAStack(pDS烙
此文档下载收益归作者所有