问题来了…… 我为什么要用链表???!
求波兰式转成逆波兰式更方便
注意几点: 1. 这道题给出的算式不是波兰式,要反过来考虑。 2. 注意计算时先计算哪个数字(尤其是减法和除法)。 附C代码:
#include <stdio.h> #include <string.h> #include <stdlib.h> int main() { int T, I; scanf("%d",&T); for(I=0; I<T; I++) { double num[50]; int i=-1, j=0; char s[20]; while(scanf("%s",s)) { int l=strlen(s); if(l==1 && s[0]=='+') num[--i]=num[i+1]+num[i]; else if(l==1 && s[0]=='-') num[--i]=num[i+1]-num[i]; else if(l==1 && s[0]=='*') num[--i]=num[i+1]*num[i]; else if(l==1 && s[0]=='/') num[--i]=num[i+1]/num[i]; else(num[++i]=atof(s)); if(getchar()=='\n') break; } printf("case #%d:\n%.2lf\n",I,num[j]); } return 0; }
问题来了……
我为什么要用链表???!
求波兰式转成逆波兰式更方便
注意几点:
1. 这道题给出的算式不是波兰式,要反过来考虑。
2. 注意计算时先计算哪个数字(尤其是减法和除法)。
附C代码: