educoder第2关:栈的应用 – 计算后缀表达式

  • Post author:
  • Post category:其他


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 版权协议,转载请附上原文出处链接和本声明。