算术表达式求值的运算符优先算法c语言完整代码

算术表达式求值的运算符优先算法c语言完整代码

ID:9390815

大小:14.06 KB

页数:4页

时间:2018-04-29

算术表达式求值的运算符优先算法c语言完整代码_第1页
算术表达式求值的运算符优先算法c语言完整代码_第2页
算术表达式求值的运算符优先算法c语言完整代码_第3页
算术表达式求值的运算符优先算法c语言完整代码_第4页
资源描述:

《算术表达式求值的运算符优先算法c语言完整代码》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、#include#include#include#defineSTACK_INIT_SIZE100#defineSTACKINCREMENT10#defineTRUE1#defineFALSE0typedefintStatus;typedefcharSElemType;typedefstruct{SElemType*base;SElemType*top;intstacksize;}StackChar;//sequence序列typedefstruct{float*base;float*top;intstack

2、size;}StackFloat;//sequence序列StatusInitStack(StackChar**S){//初始化空桟*S=(StackChar*)malloc(sizeof(StackChar));(*S)->base=(SElemType*)malloc(STACK_INIT_SIZE*sizeof(SElemType));if(!(*S)->base)exit(OVERFLOW);(*S)->top=(*S)->base;(*S)->stacksize=STACK_INIT_SIZE;returnOK;}//InitStack(&S);Statu

3、sinitStack(StackFloat**S){//初始化空桟*S=(StackFloat*)malloc(sizeof(StackFloat));(*S)->base=(float*)malloc(STACK_INIT_SIZE*sizeof(float));if(!(*S)->base)exit(OVERFLOW);(*S)->top=(*S)->base;(*S)->stacksize=STACK_INIT_SIZE;returnOK;}//initStack(&S);StatusPop(StackChar**S,SElemType*a){if((*S)-

4、>top==(*S)->base){printf("ERROR!");returnERROR;}*a=*(--(*S)->top);returnOK;}//Pop(&S,&e);Statuspop(StackFloat**S,float*a){if((*S)->top==(*S)->base){printf("ERROR!");returnERROR;}*a=*(--(*S)->top);returnOK;}//Pop(&S,&e);StatusPush(StackChar*S,SElemTypee){*S->top++=e;returnOK;}//Push

5、(S,e);Statuspush(StackFloat*S,floate){*S->top++=e;returnOK;}//push(S,e);SElemTypeGetTop(StackCharS){SElemTypee;e=*(S.top-1);returne;}//GetTop(*S,&e);floatgetTop(StackFloatS){floate;e=*(S.top-1);returne;}//GetTop(*S,&e);intInOP(charc){//判断c是否为运算符,是返回TRUE,否则返回FALSEswitch(c){case'+':retur

6、nTRUE;case'-':returnTRUE;case'*':returnTRUE;case'/':returnTRUE;case'(':returnTRUE;case')':returnTRUE;case'#':returnTRUE;default:returnFALSE;}}//InOP(b[2])charprecede(SElemTypee,charc){//判断e和c的优先级,若e的优先权小于c返回'<';...'=';...'>';charOP[7]={'+','-','*','/','(',')','#'};switch(e){case'+':if(

7、c=='+'

8、

9、c=='-'

10、

11、c==')'

12、

13、c=='#')return'>';elsereturn'<';case'-':if(c=='+'

14、

15、c=='-'

16、

17、c==')'

18、

19、c=='#')return'>';elsereturn'<';case'*':if(c=='+'

20、

21、c=='-'

22、

23、c=='*'

24、

25、c=='/'

26、

27、c==')'

28、

29、c=='#')return'>';elsereturn'<';case'/':if(c=='+'

30、

31、c=='-'

32、

33、c=='*'

34、

35、c=='/'

36、

37、c==')'

38、

39、c=='#')return'>';elsereturn'<'

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。