1, 表达式一般由操作数(operand),运算符(operator)和界限符(delimiter)组成。操作数可以有常数,变量或者标识符。运算符分为算术运算符,关系运算符和逻辑运算符。基本界限符有左右括号和表达式结束符号。为了程序简单,仅讨论简单算术表达式的求值问题。这种表达式只含加,减,乘,除和四则运算符,括号以及结束符‘#’。 2, 算法基本思想: 建立两个栈:一个是操作数栈(Stack_nd),用以寄存操作数或运算结果;另一个是运算符栈(Stack_tr),用以寄存运算符和界限符。 依次读入表达式中的字符,若是操作数则压进操作数栈(Stack_nd),若是运算符,则与运算栈(Stack_tr)的栈顶元素比较优先级,根据比较的结果进行相应的操作。 3, 规定算符间的优先级;算符q1与q2至多是下面三种关系之一: q1<q2 q1的优先权低于q2 q1=q2 q1的优先权等于 q2 q1>q2 q1的优先权高于 q2