洛阳专注网站建设的公司,自己制作一个网站需要多少钱,阿里巴巴网站运营,网站推广软件免费题目描述 对于一个基于二元运算符的后缀表示式#xff08;基本操作数都是一位正整数#xff09;#xff0c;求其代表的算术表达式的值。输入 输入一个算术表达式的后缀式字符串#xff0c;以‘#’作为结束标志。输出 求该后缀式所对应的算术表达式的值#xff0c;并输出之… 题目描述
对于一个基于二元运算符的后缀表示式基本操作数都是一位正整数求其代表的算术表达式的值。输入
输入一个算术表达式的后缀式字符串以‘#’作为结束标志。输出
求该后缀式所对应的算术表达式的值并输出之。示例输入 59*684/-3*# 示例输出 57 #include stdio.h #includestdlib.h #define maxstack 1000 #define stacknum 1000 typedef struct { int *top,*base; int stacksize; }stack; void Initstack(stack s)//栈的初始化 { s.base(int *)malloc(maxstack*sizeof(int)); if(!s.base) exit(0);//栈溢出 s.tops.base; s.stacksizemaxstack; } void push(stack s,char e)//进栈 { if(s.top-s.bases.stacksize) { s.base(int *)realloc(s.base,(maxstackstacknum)*sizeof(int)); if(!s.base) exit(0);//栈溢出 s.tops.bases.stacksize; s.stacksizestacknum; } s.top;//栈顶元素为e *s.tope; } int Empty(stack s)//判断是否为空栈 { if(s.bases.top) return 1; return 0; } void Pop(stack s)//出栈 { if(!Empty(s)) s.top--; } void print(stack s) {//、栈内元素的输出 while(s.top!s.base) { printf(%c,*s.top); Pop(s); } printf(\n); } void cal(stack s,char st[],int n)//由栈的后缀式求值 { int i,pr,la; int ch; for(i1;in;i) { if(st[i]1st[i]9)//数字进栈 { ch(st[i]-0); push(s,ch); } else if(st[i])//号栈内两个数出栈计算再进栈 { pr*s.top; s.top--; la*s.top; *s.topprla; } else if(st[i]*) { pr*s.top; s.top--; la*s.top; *s.toppr*la; } else if(st[i]-) { pr*s.top; s.top--; la*s.top; *s.topla-pr; } else if(st[i]/) { pr*s.top; s.top--; la*s.top; *s.topla/pr; } } printf(%d\n,*s.top); } int main() { char ch,st[10000]; int i0; stack s;//栈的定义 Initstack(s);//栈的初始化 while(~scanf(%c,ch)) { if(ch!#) { i; st[i]ch; } else break; } cal(s,st,i); return 0; }