赋值语句的翻译(逆波兰式结果)
#include<iostream.h> #include<stdio.h> #include<string.h> typedef struct mystack_st { char data[30]; int top; }STACK; void disp(STACK s) { while(s.top>=0) cout<<s.data[s.top--]<<endl; } void push(STACK s,char c) { s.data[++s.top]=c; } char pop(STACK s) { char c; if(s.top<0) return 0; c=s.data[s.top--]; return c; } void main() { int i,j,k,l; char c[30],s[30]; STACK s1,s2; s1.top=-1; s2.top=-1; cout<<"输入赋值语句并以#结束:"; for(i=0;i<30;i++) {cin>>s[i]; if(s[i]=='#') break; } for(i=0;i<30;i++){ if('0'<=s[i]&&s[i]<='9') { s1.data[++s1.top]=s[i]; //push(s1,s[i]); } if(('a'<=s[i]&&s[i]<='z')||('A'<=s[i]&&s[i]<='Z')) { s1.data[++s1.top]=s[i]; } if(s[i]=='#') break; else { switch(s[i]){ case'=': {if(s2.top<0) {s2.data[++s2.top]=s[i];continue;} else if((s2.data[s2.top]=='*'||s2.data[s2.top]=='/'||s2.data[s2.top]=='+'||s2.data[s2.top]=='-')&&(s2.top!=l-1)) { while((s2.data[s2.top]=='*'||s2.data[s2.top]=='/'||s2.data[s2.to 。。。。。。。。。。
- 1
- 名金2012-11-09用来应急,但是认真看过了,写的不错。不过我比较喜欢用面向对象方法学写。
- blue的云云2014-06-26写的不错,简单了点
- u0111195082014-01-05只能应对简单的表达式,稍微复杂就出现错误了.
- airind2013-01-08只能应对简单的表达式,稍微复杂就失效
- 粉丝: 8
- 资源: 13
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助