有关栈API详情參看我的还有一篇博文: 栈的链式存储 - API实现
遍历后缀表达式中的数字和符号
对于数字:进栈
对于符号:
从栈中弹出右操作数
从栈中弹出左操作数
依据符号进行运算
将运算结果压入栈中
遍历结束:栈中的唯一数字为计算结果
#include <stdio.h>
#include "LinkStack.h"
int isNumber3(char c)
{
return ('0' <= c) && (c <= '9');
}
int isOperator3(char c)
{
return (c == '+') || (c == '-') || (c == '*') || (c == '/');
}
int value(char c)
{
return (c - '0');
}
int express(int left, int right, char op)
{
int ret = 0;
switch (op)
{
case '+':
ret = left + right;
break;
case '-':
ret = left - right;
break;
case '*':
ret = left * right;
break;
case '/':
ret = left / right;
break;
default:
break;
}
return ret;
}
int compute(const char* exp)
{
LinkStack* stack = LinkStack_Create();
int ret = 0;
int i = 0;
while (exp[i] != '