数据结构C语言版之表达式求值
==此博客代码思想参考了严蔚敏老师的教材,特此声明==
【例子输入】 3*(7-2)+8/2-1#
【例子输出】 18
#include <stdio.h>
#include <stdlib.h>
#include <iostream>
#include <stack>
using namespace std;
bool isOpr(char);
char precede(char,char);
float operate(float,char,float);
int main(){
char c;
stack<float> res; //保存操作数和结果的栈
stack<char> opr; //保存操作码的栈
opr.push('#'); //‘#’入栈,便于之后的判断
c = getchar();
while(c != '#' || opr.top() != '#'){ //输入没结束或者操作码的栈不为空
if(!isOpr(c)){ //c是操作数
res.push(c - '0'); //将字符c转换成数字压入栈
c = getchar();
}else{ //c为操作码
switch(precede(opr.top(),c)){ //判断栈顶操作码和c的优先级
case('<'): //输入字符c的优先级较大
opr.push(c); //c入栈
c = getchar();