欢迎来到天天文库
浏览记录
ID:15182598
大小:71.00 KB
页数:13页
时间:2018-08-01
《长沙理工大学数据结构栈的实现及应用算术表达式求值实验报告》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、批阅实验报告年级班号学号姓名实验名称:栈的实现及其应用:算术表达式的计算实验日期2016年12月2日实验报告撰写内容一、实验环境二、实验目的三、实验内容四、数据结构与算法思想描述五、程序清单六、程序执行结果及其分析计算机科学与技术系2016年制一、实验环境32位操作系统下的Window平台MicrosoftVisualC++二、实验目的掌握栈的实现及使用三、实验内容1.实现栈的存储结构2.实现栈的基本操作的有关算法3.利用栈解决*算术表达式求值问题四、数据结构与算法思想描述顺序读取中缀表达式:1、当遇到数字时,将数字入数字栈2、当遇到操作符时,与操作符栈栈顶比较
2、:If(当前操作符优先级大于操作符栈栈顶的优先级)If(非”)”操作符)将当前操作符进操作符栈;ElseWhile(操作符栈栈顶不等于”(“)取操作符栈栈顶及数字栈的两个数进行运算,并将结果压入数字栈;ElseIf(非(“操作符)While(操作符栈栈顶不等于”(“)取操作符栈栈顶及数字栈的两个数进行运算,并将结果压入数字栈;Continue;(直到当前操作符比栈顶操作符优先级大)Else将当前操作符进操作符栈;3、While(操作符栈非空)操作符栈栈顶及数字栈的两个数进行运算,并将结果压入数字栈;4、在数字栈取最后结果并输出。一、程序清单//10*8^2+16
3、.3+5*(5.2*5+3.01)/4-(-10)+0.1000060+4.00416-40=666.666666//100+(-100)-(-10^2)=100//(((2016-2017+(((2015-2014))))))=0//-1+(((((((((1^0))))))))+100%10^2=0#include#include#include#include#include#includeusingnamespacestd;constintMAX=105
4、;typedefdoubleType;typedefstruct{TypeTypeStack[MAX];charcharStack[MAX];intTypeTop,charTop;}Stack;//初始化栈voidInitStack(Stack*S){S->charTop=S->TypeTop=0;}//判断charStack是否为空boolIsEmpty_Char(StackS){returnS.charTop==0;}//判断TypeStack是否为空boolIsEmpty_Type(StackS){returnS.TypeTop==0;}//判断charS
5、tack是否为满boolIsFull_Char(StackS){returnS.charTop==MAX;}//判断TypeStack是否为满boolIsFull_Type(StackS){returnS.TypeTop==MAX;}voidPush_Char(Stack*S,charch){//charStack不为满则入栈,否则输出提示if(!IsFull_Char(*S))S->charStack[S->charTop++]=ch;elsecout<<"TheCharStackIsFull!"<6、pea){//TypeStack不为满则入栈,否则输出提示if(!IsFull_Type(*S))S->TypeStack[S->TypeTop++]=a;elsecout<<"TheTypeStackIsFull!"<charTop--;returnS->charStack[S->charTop];}elsecout<<"TheCharStackIsEmpty!"<7、mpty_Type(*S)){S->TypeTop--;returnS->TypeStack[S->TypeTop];}elsecout<<"TheTypeStackIsEmpty!"<8、tack[--S.Typ
6、pea){//TypeStack不为满则入栈,否则输出提示if(!IsFull_Type(*S))S->TypeStack[S->TypeTop++]=a;elsecout<<"TheTypeStackIsFull!"<charTop--;returnS->charStack[S->charTop];}elsecout<<"TheCharStackIsEmpty!"<7、mpty_Type(*S)){S->TypeTop--;returnS->TypeStack[S->TypeTop];}elsecout<<"TheTypeStackIsEmpty!"<8、tack[--S.Typ
7、mpty_Type(*S)){S->TypeTop--;returnS->TypeStack[S->TypeTop];}elsecout<<"TheTypeStackIsEmpty!"<8、tack[--S.Typ
8、tack[--S.Typ
此文档下载收益归作者所有