书上的规则很复杂,其实只要记住这个规则百试不爽:栈里面的符号,只有一个老大,不允许有人优先级跟他一样高比它更高,否则就疯狂输出栈,直到它是栈里面优先级最高的。如果是'(',就直接进入,如果是')'就疯狂输出,直到输出到了'('。
所以根据以上的规律,如果符号只有加减乘除和中括号,那么如果只要是数字就输出。如果是符号,+-除非碰到)或者栈空,否则就疯狂输出栈,然后进栈。如果符号是*/,那么顶端如果是*/,就让他滚,然后再进栈。
天勤77页有练习。需要注意到是符号优先级:取反符号!大于*/ 大于+-大于(> < )大于&&大于||