实习报告 题目:重言式判别 班级:计算机学院12052313 姓名:卢魏旭 学号:12051521 完成日期:2012 年11 月 一、 需求分析 试写一个程序,通过真值表判断一个逻辑表达式属于哪一类的表达式 基本要求: 1)逻辑表达式从终端输入,长度不超过一行,逻辑运算符包括“|”,“&”和“~”,分别表示或,与和非,运算优先程度递增,但可以由括号改变,即括号内的运算符优先
逻辑变元为大写字母,表达式中任意地方都可以含有空格符
2)若是重言式或者矛盾式,可以只显示“True forever”或者“False forever”,否者显示“Statisfactible”,与用户交互,若用户对表达式中变元取定一组值,程序就求出并显示逻辑表达式的值
3)附加要求,可以根据用户要求,列出该逻辑表达式的真值表
测试数据: 1) (A|~A)&(B|~B) 2) (A&~A)&C 3) A|B|C|D|E|~A …… 二、 概要设计 为实现上述程序功能,以二叉树的结构来存储逻辑表达式,通过一个辅助栈来完成建树过程 二叉树的抽象数据类型定义为: ADT Bitree { 数据对象 D:D 是具有相同特性的数据元素的集 合 数据关 系 R: 基本操 作 : creatbitree(&B,&S1,&S2,*a) 初 始 条 件 :树B,栈S1,S2存在 操 作 结果 :通过两 个辅助的栈S1,S2 将 元素a 值建在 二叉树内 showtree(B) 初 始 条 件 :二叉树B 存在 操 作 结果 :先序遍 历 二叉树,输出每 一个节 点 中的信 息 ( 用于检测) voluation($B,c,value) 初 始 条 件 :二叉树B 存在 操 作 结果 :通过先序遍 历 二叉树,对树中变量 为 c 的结点 赋 值value excel(B,i,c,v[],*x) 初始条件:二叉树存