llllmz

导航

150. 逆波兰表达式求值c

 

int cmp(int a,int b,char c){
    if(c=='+') return a+b;
    if(c=='-') return a-b;
    if(c=='*') return a*b;
    return a/b;
}

int evalRPN(char** tokens, int tokensSize) {
    int index=0;
    int* stack=(int*)malloc(sizeof(int)*tokensSize);
    int top=0;
    while(index<tokensSize){
        if(tokens[index][0]=='+'||tokens[index][0]=='/'||tokens[index][0]=='*'||(tokens[index][0]=='-'&&tokens[index][1]==0)){
            int b=stack[--top];
            int a=stack[--top];
            stack[top++]=cmp(a,b,tokens[index][0]);
        }else{
            stack[top++]=atoi(tokens[index]);
        }
        index++;
    }
    return stack[0];
}

要注意负号和-的区别。

结果:

posted on 2024-03-13 19:09  神奇的萝卜丝  阅读(12)  评论(0)    收藏  举报