数据结构表达式求值代码.doc_第1页
数据结构表达式求值代码.doc_第2页
数据结构表达式求值代码.doc_第3页
数据结构表达式求值代码.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

/代码部分:#includeusing namespace std;#define MAXSIZE 100typedef char ElemType;/定义栈typedef structchar aMAXSIZE;int top;/栈顶指针SqStack;char op8=+,-,*,/,(,),#;/运算符集char ch77= /运算符优先关系集 , , , , , , , ,= ;void InitStack(SqStack &s) for(int i=0;iMAXSIZE;i+)s.ai=0;s.top=0;char Push(SqStack &s,ElemType e)if (s.top=MAXSIZE-1) coutOverflow!endl;elses.top=s.top+1;s.as.top-1=e;return e;ElemType Pop(SqStack &s,ElemType &e)if (s.top=0) coutStack is empty!endl; return(-1);else e=s.as.top-1;s.top=s.top-1;return e;ElemType GetTop(SqStack s,ElemType& e)if (s.top=0) coutStack is empty!endl; return(-1); elsee=s.as.top-1;return e;bool ifnot(char c)/判断是否是运算符for(int i=0;i8;i+)if (c=opi)return 1;return 0;int FirstValue(char ch) /判断字符在数组中的位置int k;switch(ch)case +:k=0;break; case -:k=1;break; case *:k=2;break; case /:k=3;break; case (:k=4;break; case ):k=5;break; case #:k=6;break;return k;char Precede(char ch1,char ch2)/判断优先关系的函数 int i=0,j=0;i=FirstValue(ch1);/调用函数j=FirstValue(ch2);/调用函数return chij;/返回优先关系的字符char Operate(int ch3,char theta ,int b)int result;if(theta=+)result=(ch3-0)+(b-0);if(theta=-)result=(ch3-0)-(b-0);if(theta=*)result=(ch3-0)*(b-0);if(theta=/)result=(ch3-0)/(b-0);return (result+0);int main() char c;/用来接收字符char x,theta,e,b,a1,m;/定义临时的字符变量x=m=theta=e=b=a1=NULL;/给临时变量赋值SqStack OPTR,OPND;/定义运算符栈和操作数栈InitStack(OPTR);Push(OPTR,#);/初始化,让#是运算符栈底元素InitStack(OPND);/初始化操作数栈cout请输入表达式,以#结束endl;c=getchar();while(c!=#|GetTop(OPTR,e)!=#)if(!ifnot(c)/判断是否是运算符Push(OPND,c);c=getchar();/不是运算符则进栈elseswitch (Precede(GetTop(OPTR,e),c)case:Pop(OPTR,theta);Pop(OPND,b);Pop(OPND,a1);/退栈并将运算结果入栈Push(OPND,Operate(a1,theta,b);break;/s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论