试图理解调车场算法



我正在尝试分流场算法,所以我开始研究它。在这样做的时候,我发现了一些有趣的文档,我并不真正理解:

    // Current token is a number, push 
    // it to stack for numbers. 
    else if(isdigit(tokens[i])){ 
        int val = 0; 
        // There may be more than one 
        // digits in number. 
        while(i < tokens.length() && 
                    isdigit(tokens[i])) 
        { 
            val = (val*10) + (tokens[i]-'0'); 
            i++; 
        } 
        values.push(val); 
    } 

我不明白为什么在while内,变量val乘以10(val=(val*10))。有人可以帮助我理解为什么算法必须这样做吗?

因为否则你只会添加数字。例如,假设你想要123:你得到1,乘以10得到10,加2得到12,乘以10得到120,然后加上3得到123

如果你省略乘法10,你只会得到1 + 2 + 3 == 6

相关内容

  • 没有找到相关文章

最新更新