数据结构课程设计报告
数据结构课程设计报告
班级:191131班
学号:20131000806
姓名:
指导老师:
日期:2015/07/13
题号9 题目:计算命题演算公式的真值
所谓命题演算公式是指由逻辑变量(其值为TRUE 或FALSE)和逻辑运算符∧(AND)、∨(OR)和┐(NOT)按一定规则所组成的公式(蕴含之类的运算可以用∧、∨和┐来表示)。公式运算的先后顺序为┐、∧、∨,而括号()可以改变优先次序。已知一个命题演算公式及各变量的值,要求设计一个程序来计算公式的真值。
要求:
(1)程序运行有菜单选择。
(2)利用二叉树来计算公式的真值。首先利用堆栈将中缀形式的公式变为后缀形式;然后根据后缀形式,从叶结点开始构造相应的二叉树;最后按后序遍历该树,求各子树之值,即每到达一个结点,其子树之值已经计算出来,当到达根结点时,求得的值就是公式之真值。
(3)逻辑变元的标识符不限于单字母,而可以是任意长的字母数字串。
(4)根据用户的要求显示表达式的真值表。
需求分析
1) 由逻辑变量(其值为TRUE或FALSE)【实际操作使用,0代表FALSE,1代表TRUE)】和逻辑运算符∧(AND)、∨(OR)和┐(NOT)【实际操作使用代表AND,|代表OR,~代表NOT】按一定规则所组成的公式。公式运算的先后顺序为┐、∧、∨,而括号()可以改变优先次序。输入输出
2) 以人机对话的方式让用户输入要计算的命题表达式;计算出最后的真值并输到屏幕上。
基本思想:
①利用二叉树计算公式的真值:
第一步:利用堆栈将中缀形式的公式变为后缀形式;
第二步:根据后缀形式,从叶结点开始构造相应的二叉树;
第三步:按后序遍历该树,求各子树之值,即每到达一个结点,其子树之值已经计算出来,当到达根结点时,求得的值就是公式之真值;
②逻辑变元的标识符不限于单字母,而可以是任意长的字母数字串;
③根据用户的要求显示表达式的真值表。
2.设计
程序入口概要设计
程序入口
等待用户
等待用户输入
有误检查输入是否有错误
有误
检查输入是否有错误
无误
无误
将中辍表达式
将中辍表达式转化为后缀表达式
借助后缀表达式构造
借助后缀表达式构造二叉树
打印二叉树
打印二叉树
根据变量真值
根据变量真值计算表达式真值
否
否
是否退出
是否退出
是
是
退出
退出程序
2.1 设计思想
(1)数据结构设计
包括逻辑结构设计和存储结构设计
用于中辍转换后缀的栈结构:
抽象为模板类:
templatetypename Typeclass Stack
{
public:
Stack(){};
~Stack(){};
void Push(const Type item);
Type Pop(void);
Type Top(void)const;
bool IsEmpty(void)const;
private:
std::vectorType m_Items;
};
用于从后缀表达式计算真值的二叉树
如算式:(abc*def)|(gh123(as45|qw45))转化后构造的二叉树如下:
二叉树抽象为:
class Bitree//二叉树类
{
private:
BitreeNodemyData *m_Root;
void Print(BitreeNodemyData *node, int level)const;
void Destroy(BitreeNodemyData * node);
public:
Bitree();
~Bitree();
void Visit(BitreeNodemyData *node)const;
void Print()const;
void Destroy();
void MakeBitree(myData data, BitreeNodemyData *left,
BitreeNodemyData *right, BitreeNodemyData *parent,bool sym);
void MakeBitree(BitreeNodemyData *root);
bool IsEmpty()const;
};
(2)算法设计
中缀表达式变成后缀表达式:
void Fomula::Transfer();
在将中缀表达式变成后缀表达式的时候会用到堆栈,因此首先需要初始化一个堆栈。又由于逻辑变元可能是字符也可能是字符串,所以它又不同于将单字符的逻辑变元的中缀表达式变成后缀表达式。我的设计是这样的,我将中缀表达式变成后缀表达式的过程分成了两部:化简(将一维的复杂的中缀表达式变成一维的简单的中缀表达式,并将字符串逻辑变元存放在二维数组中),转化(将化简后的中缀表达式变成后缀表达
您可能关注的文档
最近下载
- 付费式热能计量与控制系统毕业设计 关键词:预付费;热能计量;远程抄表.doc VIP
- 初中英语:八年级英语上册期末押题作文范文.docx VIP
- 2025届江苏省江阴市利港中学九上化学期末检测试题含解析.doc VIP
- 标准图集 - 12J304楼地面建筑构造图集---.pdf VIP
- 实验室安全知识培训-完整版.pptx VIP
- 2025《基于单片机的温湿度及空气质量检测控制系统设计》7400字(论文).docx VIP
- 90S503_格栅、格网及起吊架.pdf VIP
- 通信线路施工组织方案.docx VIP
- 常压下用正交试验探究镍磷铁最佳浸出镍条件.doc VIP
- 2024-2025学年江西省九江市八年级上册期末数学试卷含答案.pdf VIP
原创力文档

文档评论(0)