- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
合肥学院
计算机科学与技术系
课程设计报告
2012 ~2013 学年第二学期
课程 数据结构与算法 课程设计名称 重言式判别 专业班级 12计本(1) 指导教师 胡春玲 龙夏
2014年6 月
题目:重言式判别
内容:判断一个输入的逻辑表达式是属于重言式、矛盾式还是非重言非矛盾式。
1、问题分析和任务定义
任务定义:(1) 逻辑表达式从终端输入,长度不超过一行。逻辑运算符包括 |, 和 ~,分别表示或、与和非,运算优先程度递增,但可由括号改变,即括号内的运算优先。逻辑变元 为大写字母。表达式中任何地方都可以含有多个空格符。
(2) 若是重言式或矛盾式,可以只显示True forever,或False forever,否则显示 Satisfactible 以及变量名序列,与用户交互。若用户对表达式中变元取定一组值,程序就求出并显示逻辑表达式的值。
问题分析:
1、 一个逻辑表达式如果对于其变元的任一种取值均为真,则称为重言式;反之,如果对于其变元的任一种取值都为假,则称为矛盾式,然而,更多的情况下,既非重言式,也非矛盾式,写一个程序通过真值表判别一个逻辑表达式属于上述哪一类。基本要求如下:
2、 逻辑表达式从终端输入,长度不超过一行。逻辑运算符包括“|”、“”、“~”,分别表示或、与、非,运算优先程度递增,但可有括号改变,即括号内的运算优先。逻辑变元为大写字母。表达式中任何地方都可以含有多个空格符。
3、 若是重言式或矛盾式,可以只显示“True Forever”或“False Forever”,否则显示运算中每种赋值和与其相对应的表达式的值。
4、 本程序先使用栈将逻辑表达式的变量进行存储,然后将栈中的元素作为二叉树的结点结构,然后根据优先级读取表达式建立二叉树,并通过逐个判断实现对重言式的判别。
5、程序执行的命令:
输入逻辑表达式。
判断表达式是重言式还是矛盾式。
退出程序。
6、细节设置
为实现用户更好的操作,程序应允许在表达式中插入多个空格,对大小写没有特殊要求,并含有较多的提示信息,一方便用户操作。
2、数据结构的选择和概要设计
图1 流程图
本章主要介绍
1、数据结构的设计
//根据表达式建立的二叉树的结点定义,由于表达式的求值类似二叉树的中序遍历,故我们可以ijiang表达式构造为一个二叉树;
typedef struct btdnode{}*bitree;
//识别表达式使用的堆栈定义,它存放的都是树的结构,鉴于逻辑符号的优先不同,我们需要用到堆栈;
typedef struct lnode_optr{}sqstack;
2、算法的设计
本设计从总体上划分可分为四个模块,
第一个模块为树与堆栈的创建。
void create(bitree zigen,bitree l,bitree r){};
void creatstack(sqstack st){};
void creattree(char s[],bitree tree){};
第二个模块为对树与堆栈的操作,包括对树的取值以及堆栈的入栈,出栈操作。
int value_tree(bitree tree){};
void push(sqstack st,bitree e){};
void pop(sqstack st,bitree e){}
第三个模块为对表达式的逻辑运算符的判别。
char youxianji(char lie,char hang){};
void gettop(sqstack st,bitree e){};
第四个模块为于用户的交互。
void user(){};
3、抽象数据类型的 设计
根据所设计的数据结构和 函数接口,设计抽象数据类型。
ADT Binary Tree{
数据对象:D是具有相同特性的数据元素的集合。
二叉树数据关系:
若D为空集,称BinaryTree 为空二叉树;
否则 关系 R={H};
在D中存在唯一的成为根的数据元素root,它在关系H下无前驱;
D中其余元素必可分为两个互不相交的子集L和R,每一个子集都是一棵符合本定义的二叉树,并分别为root的左子树和右子树。如果左子树L不空,则必存在一个根结点,它是root的“左后继”(root∈H),如果右子树R不空,则必存在一个根结点为root的“右后继”(root∈H)。
基本操作P:
{结构初始化}
initBiTree(T);
操作结果:构造二叉树T。
CreateBiTree(T,definition);
初始条件:definition给出二叉树T的定义。
操作结果:按definition构造二叉树T。
{销毁结构}
De
您可能关注的文档
最近下载
- 2电气火灾监控系统设计施工及验收规范.doc VIP
- 危险房屋鉴定报告(模板).doc VIP
- 浴池人员卫生知识培训课件.pptx VIP
- SIEMENS西门子 S7-1500作为Modbus TCP客户端访问多个设备的方法.pdf VIP
- JTGT 3832—2018公路工程预算定额.docx
- 甘肃省定西市2023-2024学年九年级上册11月月考数学试题(含解析).docx VIP
- power-electronics西班牙SD6K-1通用变频器操作手册.pdf
- 桥梁下部结构施工方案_四川_柱式墩_钢筋砼承台.docx VIP
- 配电箱安装工程施工方案.doc VIP
- 职业生涯人物访谈报告(采访教师)汇编.pdf VIP
原创力文档


文档评论(0)