中缀表达式转后缀表达式 中缀表达式转后缀表达式的规则
遇到操作数:直接输入到后缀表达式栈 2
遇到运算符,直接入操作符栈 3
遇到左括号:直接将其入栈 4
遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出
遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈 6
最终将操作符栈中的元素依次出栈,输出到后缀表达式栈
以下是自己写的代码
亲测没有问题
(模拟一个计算器,可以带括号,中间可以空格,只支持整数输入,但是输出结果精确到小数后6 位) #include "stdio
h" #define MAX_LEN 100 typedef struct cal{ unsigned char isOper;//是否是操作数 1,操作符 0
操作数 double Num; //值
或者是操作符的ASCII 值 }STRUCT_CAL; #define IS_NUM 0x00 #define IS_OPER 0x01 STRUCT_CAL stackCal[MAX_LEN]; STRUCT_CAL stackCalBack[MAX_LEN]; unsigned char topCal; char stackOper[MAX_LEN]; unsigned char topOper; /***************************************************************** * 堆栈初始化 *****************************************************************/ void stackInit(void) { int i; for(i=0;i=MAX_LEN)return; stackCal[topCal]