double ComputePostfix(char* s)
{
// 请在此添加代码,补全函数ComputePostfix,计算后缀表达式
/********** Begin *********/
int i = 0;//数组下标
T num1 = 0;
T num2 = 0;
T num = 0;
LinkStack* so = LS_Create(); // 创建运算符栈
while (s[i])
{
if (s[i] >= '0'&&s[i] <= '9')//当检测的数组该位数是一个0-9的数就压入操作数栈
{
LS_Push(so, s[i++] - 48);//因为是字符类型 所以需要ASCII码-48
continue;//不执行本次循环后的操作 直接判断循环条件进而进入下一循环
}
if (s[i] == '+' || s[i] == '-' || s[i] == '*' || s[i] == '/')
{
LS_Pop(so, num2);
LS_Pop(so, num1);
switch (s[i])
{
case '+':num = num1 + num2; LS_Push(so, num); break;
case '-':num = num1 - num2; LS_Push(so, num); break;
case '*':num = num1 * num2; LS_Push(so, num); break;
case '/':num = num1 / num2; LS_Push(so, num); break;
}
i++;
}
}
LS_Pop(so, num);
return num;
版权声明:本文为m0_54015435原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。