版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、#include <iostream>#include<stdio.h>#include<stdlib.h>#include<malloc.h>#include<string.h>using namespace std;#define OK 1#define ERROR 0#define OVERFLOW -2#define STACK_SIZE 100#define STACKINCREMENT 10#define OPSIZE 7typedef double ElemType;typedef char SElemType;char
2、 opOPSIZE='+','-','*','/','(',')','#'char priorOPSIZEOPSIZE='>','>','<','<','<','>','>','>','>','<','<','<','
3、;>','>','>','>','>','>','<','>','>','>','>','>','>','<','>','>','<','<','<','<','
4、;<','=',' ','>','>','>','>',' ','>','>','<','<','<','<','<',' ','='typedef struct ElemType *top; ElemType *base; int Stacksize;OPND;
5、typedef struct SElemType *top; SElemType *base; int Stacksize;OPTR;void InitStack(OPND *S1) S1->base=(ElemType *)malloc(STACK_SIZE * sizeof(ElemType); if(NULL=S1->base) printf("Init Failed!n"); exit (OVERFLOW); else S1->top=S1->base; S1->Stacksize=STACK_SIZE; int StackEmpty(
6、OPND *S1) if(S1->top=S1->base) return 1; else return 0;int StackEmpty(OPTR *S2) if(S2->top=S2->base) return 1; else return 0;void InitStack(OPTR *S2) S2->base=(SElemType *)malloc(STACK_SIZE*sizeof(SElemType); if(NULL=S2->base) printf("Init Failed!n"); exit (OVERFLOW); els
7、e S2->top=S2->base; S2->Stacksize=STACK_SIZE; void Push(OPND *S1,ElemType e) if(S1->top-S1->base>=S1->Stacksize) S1->base=(ElemType *)realloc(S1->base,(S1->Stacksize+STACKINCREMENT)*sizeof(ElemType); if(!S1->base) exit(OVERFLOW); S1->top=S1->base+S1->Stacksi
8、ze; S1->Stacksize=S1->Stacksize+STACKINCREMENT; *S1->top=e; S1->top+;void Push(OPTR *S2,SElemType e) if(S2->top-S2->base>=S2->Stacksize) S2->base=(SElemType *)realloc(S2->base,(S2->Stacksize+STACKINCREMENT)*sizeof(SElemType); if(!S2->base) exit (OVERFLOW); S2->
9、top=S2->base+S2->Stacksize; S2->Stacksize+=STACKINCREMENT; *S2->top+=e;ElemType Pop(OPND *S1,ElemType *e) if(!StackEmpty(S1) S1->top=S1->top-1; *e=*S1->top; else return ERROR; return OK;SElemType Pop(OPTR *S2,SElemType *e) if(StackEmpty(S2) return ERROR; else *e=*-S2->top; re
10、turn OK;ElemType GetTop(OPND *S1,ElemType *e) if(!StackEmpty(S1) *e=*(S1->top-1); return OK;SElemType GetTop(OPTR *S2,SElemType *e) if(!StackEmpty(S2) *e=*(S2->top-1); return OK;bool Judege(char c,char *op)/判断C是否为运算符 bool check=false; int i; for(i=0;i<OPSIZE;i+) if(c=opi) check = true; retu
11、rn check;int ReturnOpOrd(char c,char *op)/返回运算符c在OP中的位置 int i; for(i=0;i<OPSIZE;i+) if(c=opi) return i; return OK;char Precede(char theat1,char theat2)/g判断运算符栈的栈顶运算符theta1和读入的运算符theta2优先关系 return priorReturnOpOrd(theat1,op)ReturnOpOrd(theat2,op);double Operate(ElemType a,SElemType theat,ElemType
12、b)/操作数进行运算 switch(theat) case '+': return a+b; break; case '-': return a-b; break; case '*': return a*b; break; case '/': if(b!=0) return a/b; else printf("出错!除数为0!n"); return ERROR; break; default: return 0; float EvaluateExpression(char *expression) OPND S
13、1; OPTR S2; char *c=expression; ElemType e1,e2,result,d; char temp10,r2; SElemType e; InitStack(&S1); InitStack(&S2); Push(&S2,'#'); strcpy(temp,"0"); while(*c!='#'|(GetTop(&S2,&e),e)!='#') if(!Judege(*c,op) r0=*c; r1='0' strcat(temp,r);
14、c+; if(Judege(*c,op) d=(float)atof(temp); Push(&S1,d); strcpy(temp,"0"); else switch(Precede( (GetTop(&S2,&e),e),*c) case '<': Push(&S2,*c); c+; break; case '=': Pop(&S2,&e); c+; break; case '>': Pop(&S1,&e1); Pop(&S1,&e2); Pop(&S2,&e); result=Operate(e2,e,e1); Push(&S1,result); bre
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026四川自贡自流井区招录公益性岗位人员的22人考试备考试题及答案解析
- 2026甘肃水文地质工程地质勘察院有限责任公司招聘18人考试备考试题及答案解析
- 2026新疆北新路桥集团全社会招聘1人笔试模拟试题及答案解析
- 2026广东江门市皮肤医院招聘2人考试备考题库及答案解析
- 2026福建福州福清市城关幼儿园招聘考试备考题库及答案解析
- 2026福建中医药大学附属康复医院招聘高层次人才13人考试参考试题及答案解析
- 2026年智能决策项目评估报告
- 2026广东深圳市龙岗区第七人民医院招聘聘员及劳务派遣人员39人考试参考题库及答案解析
- 2026中国邮政集团有限公司江门市分公司招聘社会招聘人才储备考试备考题库及答案解析
- 2026水电水利规划设计总院招聘2人考试备考试题及答案解析
- 2026年徐州生物工程职业技术学院单招综合素质考试备考试题含详细答案解析
- 村两委干部法律培训课件
- 2026年CAAC无人机练习测试卷含答案
- 2025年抖音法律行业趋势白皮书-
- 2026年2026年吞咽功能障碍康复课件
- 《大学生职业发展与就业指导》课件-第一章 生涯意识唤醒
- 2025年同等学力申硕工商管理综合真题(含答案解析)
- 人教版五年级数学上册《解方程》计算专项训练(十大类型)(含答案)
- 2026春季高考政治总复习:中国特色社会主义 主观题20题(原卷版)
- 第四单元-大单元教学设计
- 耳廓生物力学与应力分析
评论
0/150
提交评论