




如果您无法下载资料,请参考说明:
1、部分资料下载需要金币,请确保您的账户上有足够的金币
2、已购买过的文档,再次下载不重复扣费
3、资料包下载后请先用软件解压,在使用对应软件打开
数据结构课程设计 第一篇:数据结构课程设计一,课程题目(算符优先法计算算数表达式)以字符序列的形式从终端输入语法正确的、不含变量的整数表达式。利用教材表3.1(P53)给出的算符优先关系,实现对于算术四则混合运算(加、减、乘、除)表达式的求值。例如:7+(4-2)*3+12/2=19。注:按照四舍五入的方式将四则运算结果取整。二,程序设计思想在程序中分别设立一个运算符栈(OPTR栈),用于存储‘+’,‘-’,‘*’,‘/’,‘#’(‘#’用于判断算术表达式结束),和一个操作数栈(OPND栈),用于存放整数,输入算式后,先将数字与运算符分开入i栈,若为数字则先用转换函数将char类型的数转换为int型并进入操作数栈,若为运算符则根据教材表3.1(P53)给出的算符优先级关系,判断栈顶运算符和从键盘取得的运算符作优先级比较,若取得的运算符优先级高则进栈,直到取得运算符优先级低的,则将操作数取出作operate运算后存入栈顶,反复操作知道遇到‘#’,则结束运算,输出栈顶元素即为结果。三,程序流程图四,程序关键代码设计本次程序设计共调用了12个方法分别是:InitNumStack,ParseInt,PushNum,PopNum,InitCalStack,PopCal,PushCal,In,GetTopCal,GetTopNum,Preced,Operate。其中ParseInt方法intParseInt(charc[]){intnumber[5],i;for(i=0;inumber[i]=(int)(c[i])-48;}i=10000*number[0]+1000*number[1]+100*number[2]+10*number[3]+number[4];returni;}为将输入的数字字符型转换为整型的转换函数,通过Ascall表的转换关系,将输入的字符型数字转换为整型。在入栈前进行此方法,以便整型数的计算。Preced,Operate函数charPreced(chara,charb){charc[7]={'+','-','*','/','(',')','#'};chard[7][7]={{'>','>','','>'},{'>','>','','>'},{'>','>','>','>','','>'},{'>','>','>','>','','>'},{'','>','>','>','','>','>'},{'c=a+b;returnc;}if(theta=='-'){c=a-b;returnc;}if(theta=='*'){c=a*b;returnc;}if(theta=='/'){c=a/b;returnc;}return0;}其中preced是判定运算符栈的栈顶运算符C1与读入的运算符C2之间优先关系函数;Opearte为进行二元运算aCb的函数,如果是编译表达式,则产生这个运算的一组相应的指令并返回存放结果的中间变量名;如果是解释执行表达式,则直接进行该运算,并返回运算结果。五,程序源代码以及运行结果#include#include#includetypedefstruct{int*base;int*top;intStacksize;}SqlNum;voidInitNumStack(SqlNum&S){S.base=(int*)malloc(100*sizeof(int));S.top=S.base;S.Stacksize=100;}intParseInt(charc[]){intnumber[5],i;for(i=0;inumber[i]=(int)(c[i])-48;}i=10000*number[0]+1000*number[1]+100*number[2]+10*number[3]+number[4];returni;}voidPushNum(SqlNum&S,intc){*S.top=c;S.top++;}intPopNum(SqlNum&S){intc;S.top--;c=*S.top;returnc;}typedefstruct{char*base;char*top;intStacksize;}SqlCal;voidInitCalStack(SqlCal&S){S.base=(char*)malloc(100*sizeof(char));S.top=S.base;S.Stacksize=100;}voidPushCal(SqlCal&S,charc){*S.top=c;S.top++;}charPopCal(SqlCal&S){charc;S.top--;c=*S.top;returnc;}intIn(charc,chars[]){inti;for(i=0;iif(c==s[i])return1;ret

元枫****文章
实名认证
内容提供者


最近下载
贵州省城市管理行政执法条例.doc
贵州省城市管理行政执法条例.doc
一种基于双轨缆道的牵引式雷达波在线测流系统.pdf
一种基于双轨缆道的牵引式雷达波在线测流系统.pdf
一种胃肠道超声检查助显剂及其制备方法.pdf
201651206021+莫武林+浅析在互联网时代下酒店的营销策略——以湛江民大喜来登酒店为例.doc
201651206021+莫武林+浅析在互联网时代下酒店的营销策略——以湛江民大喜来登酒店为例.doc
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf
用于空间热电转换的耐高温涡轮发电机转子及其装配方法.pdf