欢迎来到天天文库
浏览记录
ID:2222066
大小:67.67 KB
页数:14页
时间:2017-11-15
《数据结构报告—重言式判别》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实习报告题目:重言式判别班级:计算机学院12052313姓名:卢魏旭学号:12051521完成日期:2012年11月一、需求分析试写一个程序,通过真值表判断一个逻辑表达式属于哪一类的表达式基本要求:1)逻辑表达式从终端输入,长度不超过一行,逻辑运算符包括“
2、”,“&”和“~”,分别表示或,与和非,运算优先程度递增,但可以由括号改变,即括号内的运算符优先。逻辑变元为大写字母,表达式中任意地方都可以含有空格符。2)若是重言式或者矛盾式,可以只显示“Trueforever”或者“Falseforever”,否者显示“Statisfa
3、ctible”,与用户交互,若用户对表达式中变元取定一组值,程序就求出并显示逻辑表达式的值。3)附加要求,可以根据用户要求,列出该逻辑表达式的真值表。测试数据:1)(A
4、~A)&(B
5、~B)2)(A&~A)&C3)A
6、B
7、C
8、D
9、E
10、~A……二、概要设计为实现上述程序功能,以二叉树的结构来存储逻辑表达式,通过一个辅助栈来完成建树过程二叉树的抽象数据类型定义为:ADTBitree{数据对象D:D是具有相同特性的数据元素的集合数据关系R:基本操作:creatbitree(&B,&S1,&S2,*a)初始条件:树B,栈S1,S2存在
11、操作结果:通过两个辅助的栈S1,S2将元素a值建在二叉树内showtree(B)初始条件:二叉树B存在操作结果:先序遍历二叉树,输出每一个节点中的信息(用于检测)voluation($B,c,value)初始条件:二叉树B存在操作结果:通过先序遍历二叉树,对树中变量为c的结点赋值valueexcel(B,i,c,v[],*x)初始条件:二叉树存在操作结果:通过递归的算法在一维数组v[]中记录各个变量各种赋值情况(所有赋值情况的真值结果记录)}此外以栈的存储结构做辅助栈的抽象数据类型定义为:ADTBstack{数据对象:D={a
12、
13、ai<-ElemSet,i=1,2,3…n}数据关系:R1={
14、ai-1,ai<-D,i=1,2,3…n}基本操作:creatstack(&S)操作结果:建立一个空栈SPushstack(&S,&B)初始条件:栈S存在操作结果:将一个二叉树的结点入栈Popstack(&S,&B)初始条件:栈S存在操作结果:从栈中取出一个二叉树的结点showstack(S)初始条件:栈S存在操作结果:访问栈内结点,查看元素信息Gettop(S)初始条件:栈S存在操作结果:返回栈顶元素}一、详细设计#include15、.h>#include#include#includetypedefstructBiTnode{chardata;intvalue;structBiTnode*lchild,*rchild;}*Bitree;typedefstructBstack{Bitree*top;Bitree*base;};voidcreatstack(Bstack&S){S.base=(Bitree*)malloc(sizeof(BiTnode));S.top=S.base;}voidPushs16、tack(Bstack&S,Bitree&B){*S.top=B;S.top++;}voidPopstack(Bstack&S,Bitree&B){S.top--;B=*S.top;}BitreeGettop(BstackS){return*(S.top-1);}intJudge(charc)//判断字符是运算符还是操作符{if(c>='A'&&c<='Z'17、18、c>='a'&&c<='z'19、20、c=='0'21、22、c=='1')return1;elsereturn0;}charcompare(charc1,charc2)//比较两个23、运算符的优先级{charc='-1';switch(c1){case'24、':switch(c2){case'25、':c='>';break;case'&':c='<';break;case'~':c='<';break;case'(':c='<';break;case')':c='>';break;case'#':c='>';break;}break;case'&':switch(c2){case'26、':c='>';break;case'&':c='>';break;case'~':c='<';break;case'(':c='27、<';break;case')':c='>';break;case'#':c='>';break;}break;case'~':switch(c2){case'28、':c='>';break;case'&':c='>';break;case'~':c='>';break;cas
15、.h>#include#include#includetypedefstructBiTnode{chardata;intvalue;structBiTnode*lchild,*rchild;}*Bitree;typedefstructBstack{Bitree*top;Bitree*base;};voidcreatstack(Bstack&S){S.base=(Bitree*)malloc(sizeof(BiTnode));S.top=S.base;}voidPushs
16、tack(Bstack&S,Bitree&B){*S.top=B;S.top++;}voidPopstack(Bstack&S,Bitree&B){S.top--;B=*S.top;}BitreeGettop(BstackS){return*(S.top-1);}intJudge(charc)//判断字符是运算符还是操作符{if(c>='A'&&c<='Z'
17、
18、c>='a'&&c<='z'
19、
20、c=='0'
21、
22、c=='1')return1;elsereturn0;}charcompare(charc1,charc2)//比较两个
23、运算符的优先级{charc='-1';switch(c1){case'
24、':switch(c2){case'
25、':c='>';break;case'&':c='<';break;case'~':c='<';break;case'(':c='<';break;case')':c='>';break;case'#':c='>';break;}break;case'&':switch(c2){case'
26、':c='>';break;case'&':c='>';break;case'~':c='<';break;case'(':c='
27、<';break;case')':c='>';break;case'#':c='>';break;}break;case'~':switch(c2){case'
28、':c='>';break;case'&':c='>';break;case'~':c='>';break;cas
此文档下载收益归作者所有