题解 | #逆波兰表达式求值#

逆波兰表达式求值

https://www.nowcoder.com/practice/885c1db3e39040cbae5cdf59fb0e9382

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @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);
}

全部评论

相关推荐

07-20 11:20
新疆大学 Java
Alan_01:看到都是黑马点评跟苍穹外卖我就放心了
无实习如何秋招上岸
点赞 评论 收藏
分享
不愿透露姓名的神秘牛友
07-17 14:06
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务