用栈编写四则运算器
包括两个栈,运算符栈和操作数栈,采用数组方式
自左向右扫描表达式,凡是遇到操作数一律进操作数栈。
当遇到运算符时,如果他的优先级比运算符栈栈顶元素的优先级高就入栈。反之,取出栈顶运算符和操作数栈顶的两个连续操作数运算,并将结果存入操作数栈,然后继续比较该运算符与栈顶的运算符的优先级。
后缀表达式规则:从左到右遍历中缀表达式的每个数字和符号,若是数字就输出,即成为后缀表达式的一部分;
若是符号,则判断其与栈顶符号的优先级,是右括号或优先级低于找顶符号(乘除优先加减)
则栈顶元素依次出栈并输出,并将当前符号进栈,一直到最终输出后缀表达式为止。
数据栈和操作符栈压栈函数
主函数:
循环判断输入的数是否是数字 存入一个存放数字的数组
判断输入是否为'(',不是即将数字压入栈内
再循环判断操作符的优先级 flag去标志优先级
flag 决定操作符的压栈和操作数的处理
flag = 0 表示操作符压栈
flag = -1 进行操作符处理
compare函数:</