目的:读入一个逻辑表达式,包含多个变量及各种逻辑运算,输出该逻辑表达式的真值表;
思路:
1.与计算多项式的思路一致,利用双栈存储从左到右遍历;
栈具有LIFO的特点,利用栈可以储存离当前操作符最近的符号与数据,从左到右遍历,直到最终得出表达式的值;
2.两个栈一个存储符号,一个存储数据,设置栈内栈外符号位的优先级;
相同符号栈内优先级大于栈外优先级;
左括号栈内优先级最高,栈外优先级紧大于‘#’;
右括号与左括号相反;
将‘#’优先级设为最低,放入栈底,方便比较并判断终止条件;
3.每次读入一位,若为数据入数据栈;若为操作符,进行优先级比较
当栈内运算符优先级大于栈外运算符优先级,执行运算;
当栈内运算符优先级等于栈外运算符优先级,必为左右括号,弹出左括号;
当栈内运算符优先级小于栈外运算符优先级,将该符号入栈;
代码实现:
#include
#include
#include
#include
#include
#include
#include
#include