/** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param tokens string字符串一维数组 * @param tokensLen int tokens数组长度 * @return int整型 */ double add(char *arr){//算出单个字符串的值 double sum=0.0; while(*arr!='\0'){ sum*=10; sum+=*arr-48; arr++; } return sum; } #include <stdio.h> int evalRPN(char** tokens, int tokensLen ) { // write code here int sum,arr[100000],*top=NULL; int a,c;int i=1; char b; if(*(tokens[0])>='0'&&*(tokens[0])<='9') arr[0]=add(tokens[0]); else{ arr[0]=add(tokens[0]+1)*(-1); } top=arr; while(i<tokensLen){ if(strlen(tokens[i])==1&&!(*(tokens[i])>='0'&&*(tokens[i])<='9')){//入栈 a=*(top); --top; c=*(top); switch(*(tokens[i])){ case '+':sum=c+a;break; case '-':sum=c-a;break; case '*':sum=c*a;break; case '/':sum=c/a;break; } *top=sum; }else{ if(*(tokens[i])>='0'&&*(tokens[i])<='9') *(++top)=add(tokens[i]); else{ *(++top)=add(tokens[i]+1)*(-1); } } i++; } return (int)(*top); }