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

上传人:宝路 文档编号:21456156 上传时间:2017-11-23 格式:DOCX 页数:4 大小:14.38KB
返回 下载 相关 举报
算术表达式求值的运算符优先算法C语言完整代码_第1页
第1页 / 共4页
算术表达式求值的运算符优先算法C语言完整代码_第2页
第2页 / 共4页
算术表达式求值的运算符优先算法C语言完整代码_第3页
第3页 / 共4页
算术表达式求值的运算符优先算法C语言完整代码_第4页
第4页 / 共4页
亲,该文档总共4页,全部预览完了,如果喜欢就下载吧!
资源描述

《算术表达式求值的运算符优先算法C语言完整代码》由会员分享,可在线阅读,更多相关《算术表达式求值的运算符优先算法C语言完整代码(4页珍藏版)》请在金锄头文库上搜索。

1、#include#include#include#define STACK_INIT_SIZE 100#define STACKINCREMENT 10# define TRUE 1# define FALSE 0typedef int Status;typedef char SElemType;typedef struct SElemType *base;SElemType *top;int stacksize;StackChar; /sequence 序列typedef struct float *base;float *top;int stacksize;StackFloat; /seq

2、uence 序列Status InitStack(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;return OK;/ InitStack(&S);Status initStack(StackFloat *S)/初始化空桟*S=(Stac

3、kFloat *)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;return OK;/ initStack(&S);Status Pop(StackChar *S,SElemType *a)if(*S)-top=(*S)-base) printf(ERROR!n); return ERROR; *a=*(-(*S)-to

4、p);return OK;/ Pop(&S,&e);Status pop(StackFloat *S,float *a)if(*S)-top=(*S)-base) printf(ERROR!n); return ERROR; *a=*(-(*S)-top);return OK;/ Pop(&S,&e);Status Push(StackChar *S,SElemType e)*S-top+=e; return OK;/Push(S,e);Status push(StackFloat *S,float e)*S-top+=e; return OK;/push(S,e);SElemType Get

5、Top(StackChar S)SElemType e;e=*(S.top-1); return e;/GetTop(*S,&e);float getTop(StackFloat S)float e;e=*(S.top-1); return e;/GetTop(*S,&e);int InOP(char c)/判断 c 是否为运算符,是返回 TRUE,否则返回 FALSEswitch (c)case +: return TRUE;case -: return TRUE;case *: return TRUE;case /: return TRUE;case (: return TRUE;case

6、 ): return TRUE;case #: return TRUE;default: return FALSE;/InOP(b2)char precede(SElemType e,char c)/判断 e 和 c 的优先级,若 e 的优先权小于 c 返回;char OP7=+,-,*,/,(,),#;switch (e)case +: if (c=+|c=-|c= )|c=#) return ;else return ;else return ;else return ;else return ;case #: if (c=) printf(#-):FALSEn);break;else if (c=#) return =;else return : / 退栈并将运算结果入栈Pop(&OPTR, &oprtr);pop(&OPND, &b); pop(&OPND, &a); push(OPND, Operate(a, oprtr, b); break; / switch / whileprintf(=%fn,getTop(*OPND); / EvaluateExpressionvoid main()EvaluateExpression();

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > 其它办公文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号