资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
#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; /sequence 序列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=(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;return OK;/ initStack(&S);Status Pop(StackChar *S,SElemType *a)if(*S)-top=(*S)-base) printf(ERROR!n); return ERROR; *a=*(-(*S)-top);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 GetTop(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 ): 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();
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号