欢迎来到天天文库
浏览记录
ID:11575689
大小:33.00 KB
页数:6页
时间:2018-07-12
《中缀转后缀表达式并求值c 程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、#include#includeusingnamespacestd;typedefdoubleElemType;#includestructStack{ElemType*stack;inttop;intMaxSize;};voidInitStack(Stack&S)//初始化栈S为空{S.MaxSize=20;S.stack=newElemType[S.MaxSize];if(!S.stack){cerr<<"动态存储分配失败!"<2、.top=-1;}voidPush(Stack&S,ElemTypeitem)//元素item进栈,即插入到栈顶{if(S.top==S.MaxSize-1){intk=sizeof(ElemType);S.stack=(ElemType*)realloc(S.stack,2*S.MaxSize*k);S.MaxSize=2*S.MaxSize;}S.top++;S.stack[S.top]=item;}ElemTypePop(Stack&S)//删除栈顶元素并返回{if(S.top==-1){cerr<<"Stac3、kisempty!"<4、放动态存储空间{if(S.stack){delete[]S.stack;S.stack=NULL;}S.top=-1;S.MaxSize=0;}doubleCompute(char*str)//后缀表达式求值的算法{StackS;InitStack(S);doublex,y;inti=0;while(str[i]){if(str[i]==''){i++;continue;}switch(str[i]){case'+':intm,n;m=Pop(S);n=Pop(S);x=m+n;//cout<5、"<=48&&str[i]<=57){x=x*10+str[i]-48;i++;}i6、f(str[i]=='.'){i++;y=0;doublej=10.0;while(str[i]>=48&&str[i]<=57){y=y+(str[i]-48)/j;i++;j*=10;}x+=y;}}Push(S,x);//cout<<"a"<7、or!"<8、[i];while(ch!=' '){if(ch=='')ch=s1[++i];elseif(ch=='('){Push(R,ch);ch=s1[++i];}elseif(ch==')'){while(Peek(R)!='(')s2[j++]=Pop(R);Pop(R);ch=s1[++i];}elseif(ch=='+'9、10、ch=='-'11、
2、.top=-1;}voidPush(Stack&S,ElemTypeitem)//元素item进栈,即插入到栈顶{if(S.top==S.MaxSize-1){intk=sizeof(ElemType);S.stack=(ElemType*)realloc(S.stack,2*S.MaxSize*k);S.MaxSize=2*S.MaxSize;}S.top++;S.stack[S.top]=item;}ElemTypePop(Stack&S)//删除栈顶元素并返回{if(S.top==-1){cerr<<"Stac
3、kisempty!"<4、放动态存储空间{if(S.stack){delete[]S.stack;S.stack=NULL;}S.top=-1;S.MaxSize=0;}doubleCompute(char*str)//后缀表达式求值的算法{StackS;InitStack(S);doublex,y;inti=0;while(str[i]){if(str[i]==''){i++;continue;}switch(str[i]){case'+':intm,n;m=Pop(S);n=Pop(S);x=m+n;//cout<5、"<=48&&str[i]<=57){x=x*10+str[i]-48;i++;}i6、f(str[i]=='.'){i++;y=0;doublej=10.0;while(str[i]>=48&&str[i]<=57){y=y+(str[i]-48)/j;i++;j*=10;}x+=y;}}Push(S,x);//cout<<"a"<7、or!"<8、[i];while(ch!=' '){if(ch=='')ch=s1[++i];elseif(ch=='('){Push(R,ch);ch=s1[++i];}elseif(ch==')'){while(Peek(R)!='(')s2[j++]=Pop(R);Pop(R);ch=s1[++i];}elseif(ch=='+'9、10、ch=='-'11、
4、放动态存储空间{if(S.stack){delete[]S.stack;S.stack=NULL;}S.top=-1;S.MaxSize=0;}doubleCompute(char*str)//后缀表达式求值的算法{StackS;InitStack(S);doublex,y;inti=0;while(str[i]){if(str[i]==''){i++;continue;}switch(str[i]){case'+':intm,n;m=Pop(S);n=Pop(S);x=m+n;//cout<5、"<=48&&str[i]<=57){x=x*10+str[i]-48;i++;}i6、f(str[i]=='.'){i++;y=0;doublej=10.0;while(str[i]>=48&&str[i]<=57){y=y+(str[i]-48)/j;i++;j*=10;}x+=y;}}Push(S,x);//cout<<"a"<7、or!"<8、[i];while(ch!=' '){if(ch=='')ch=s1[++i];elseif(ch=='('){Push(R,ch);ch=s1[++i];}elseif(ch==')'){while(Peek(R)!='(')s2[j++]=Pop(R);Pop(R);ch=s1[++i];}elseif(ch=='+'9、10、ch=='-'11、
5、"<=48&&str[i]<=57){x=x*10+str[i]-48;i++;}i
6、f(str[i]=='.'){i++;y=0;doublej=10.0;while(str[i]>=48&&str[i]<=57){y=y+(str[i]-48)/j;i++;j*=10;}x+=y;}}Push(S,x);//cout<<"a"<7、or!"<8、[i];while(ch!=' '){if(ch=='')ch=s1[++i];elseif(ch=='('){Push(R,ch);ch=s1[++i];}elseif(ch==')'){while(Peek(R)!='(')s2[j++]=Pop(R);Pop(R);ch=s1[++i];}elseif(ch=='+'9、10、ch=='-'11、
7、or!"<8、[i];while(ch!=' '){if(ch=='')ch=s1[++i];elseif(ch=='('){Push(R,ch);ch=s1[++i];}elseif(ch==')'){while(Peek(R)!='(')s2[j++]=Pop(R);Pop(R);ch=s1[++i];}elseif(ch=='+'9、10、ch=='-'11、
8、[i];while(ch!=' '){if(ch=='')ch=s1[++i];elseif(ch=='('){Push(R,ch);ch=s1[++i];}elseif(ch==')'){while(Peek(R)!='(')s2[j++]=Pop(R);Pop(R);ch=s1[++i];}elseif(ch=='+'
9、
10、ch=='-'
11、
此文档下载收益归作者所有