为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

逆波兰式

2017-10-12 5页 doc 16KB 18阅读

用户头像

is_562397

暂无简介

举报
逆波兰式逆波兰式 #include #include typedef struct st { int maxsize; int top; int *pstack; }stack; void creatstack(stack *s,int ms); void push(stack *s, int x); int pop(stack *s); void clearstack(stack *s); char readstack(stack *s); int priority(char ch); void trans...
逆波兰式
逆波兰式 #include #include typedef struct st { int maxsize; int top; int *pstack; }stack; void creatstack(stack *s,int ms); void push(stack *s, int x); int pop(stack *s); void clearstack(stack *s); char readstack(stack *s); int priority(char ch); void transform(char a[],char b[]); int main() { char a[80],b[200]; printf("请输入中缀表达式:"); gets(a); transform(a,b); printf("输出地后缀表达式:"); puts(b); getchar(); return 0; } void creatstack(stack *s,int ms) { s->maxsize = ms; s->top = -1; s->pstack = (int *)malloc(ms*sizeof(int)); s->pstack[++s->top] = '@'; //这里@被假定为优先级最低的运算符 } void push(stack *s, int x)//入栈 { if(s->top < s->maxsize-1) s->pstack[++s->top] = x; } int pop(stack *s)//出栈 { if(s->top != -1) return s->pstack[s->top--]; } char readstack(stack *s) { return(s->pstack[s->top]); } int priority(char ch)//优先级设置 { int flag = 0; switch(ch) { case '+': case '-': flag = 1; break; case'*': case'/': flag = 2; break; default: flag = 0; break; } return flag; } void transform(char a[],char b[])//转换 { stack s; int i = 0,j = 0; creatstack(&s,20); while(a[i]) { if(a[i] >= '0' && a[i] <= '9') { b[j++] = a[i]; } else if(a[i] == '(') push(&s,a[i]); else if(a[i] == ')') { b[j++] = ' '; while(readstack(&s) != '(') { b[j++] = pop(&s); b[j++] = ' '; } } else { b[j++] = ' '; while(priority(a[i]) <= priority(readstack(&s))) { b[j++] = pop(&s); b[j++] = ' '; } push(&s, a[i]); } i++; } while(s.top != 0)//如果判断a[]结束,栈中还有运算符则出栈到b[]中 { b[j++] = ' '; b[j++] = pop(&s); } b[j++] = '\0';//将b转换为字符 } void clearstack(stack *s) { s->maxsize = 0; s->top = -1; free(s->pstack); s->pstack = 0; }
/
本文档为【逆波兰式】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索