利用两个栈计算表达式的值(C++)
1.首先建立符号的优先级表(符号的优先级在严蔚敏数据结构教材53页中有所体现)
2.然后对输入的表达式进行分解,数字存在一个栈,符号存在一个栈
这里涉及到一个问题就是如何将大于10的整数连在一起而不是拆分成几个单独的数字在别人的博客中找到了一种方法,如下:
if(counter==1) //counter=1表示上一个字符也是数字,比如12不是’1’,‘2’
{
float t = num.top();
num.pop();
num.push(t10+(c-‘0’));//将字符类型转化成为数值*
counter = 1;
}
else
{
num.push(c-‘0’); //将c对应的数值入栈num
counter++;
//cout<<“num的值为:”<<num.top()<<endl;
}
这只是其中一段,如果单个数字之后是符合,则执行else程序
在else环节,一定注意将counter置为0
3.事实证明float数组可以存放char数组,在float数组中,会显示字符的ascll码值。