存放于 word 类型的 m_word 数组中并且型为 num 下,所下标对应的型为 type
置‘0’,若为操作符,则直接存于 m_word 数组中并且型为 type 下。
在表达式转换 void Exchange(word a[100],word b[100],int m,int &l)函数中
word a[100] 存放的是中缀表达式
word b[100] 存放转换后的后缀表达式
int m 标记数组 a 中元素个数
int l 标记数组 b 中元素个数
STACK O 临时存放运算符( + - * / )并对其进行相应的入栈出栈弹
栈操作
在求值 double Add(word post[100],int l)函数中
word post[100] 后缀表达式结构体数组
int l 记录数组长度
STACK S 将后缀表达式的数字按某种方式压入此栈,经过运算后弹出
最后一个元素即为所求的值
1. 逻辑设计:(1)输入中缀表达式
2. 借助 analisis,将输入的单一字符变为相应的整数和小数,存放在一结构体数
组中,此数组可区分数和操作符
3.将中缀表达式转换为后缀表达式需要借助于一个栈来存放操作符,具体方法
如下:
①从左到右一次扫描中缀表达式的每一个字符,如果为多位数或浮点数,则直
接将它们写入后缀表达式中。
②如果遇到的是开括号“(”,则将它们压入一个操作符栈(不需要与栈顶操作
符相比较),它表明一个新的计算层次的开始,在遇到和它匹配的闭括号 “)”
时,将栈中的元素弹出来并放入后缀表达式中,直到栈顶元素为“(”时,将栈顶
元素“(”弹出(不需要加入后缀表达式),表明这一层括号内的操作处理完毕。
③如果遇到的是操作符,则将该操作符和操作符栈顶元素比较: