树和二叉树的实验报告Word文档格式.docx
- 文档编号:13625988
- 上传时间:2022-10-12
- 格式:DOCX
- 页数:14
- 大小:50.58KB
树和二叉树的实验报告Word文档格式.docx
《树和二叉树的实验报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《树和二叉树的实验报告Word文档格式.docx(14页珍藏版)》请在冰豆网上搜索。
voidpush(charcc)
初始条件:
输入表达式中的某个符号
操作结果:
将输入的字符存入buf数组中去
BiTreeCreate_RTree()
给出二叉树的定义表达式
构造二叉树的右子树,即存储表达式等号右侧的字符组
BiTreeCreate_RootTree()
构造存储输入表达式的二叉树,其中左子树存储‘X’,根节点存储‘:
=’
voidPreOrderTraverse(BiTreeT)
二叉树T存在
先序遍历T,对每个节点调用函数Visit一次且仅一次
voidInOrderTraverse(BiTreeT)
中序遍历T,对每个节点调用函数Visit一次且仅一次
voidPostOrderTraverse(BiTreeT)
后序遍历T,对每个节点调用函数Visit一次且仅一次
intmain()
主函数,调用各方法,操作成功后返回0
(三)调试分析
调试过程中还是出现了一些拼写错误,经检查后都能及时修正。
有些是语法设计上的小错误,比如一些参变量的初始值设置错误,使得程序调试出错。
还有操作符优先级设计不够合理,在输出遍历表达式结果时有错误。
在小组讨论分析后纠正了这些结果,并尽量改进了算法的性能,减小时间复杂度。
有输入表达式建立二叉树的时间复杂度为O(n),先序遍历和中序遍历及后序遍历的时间复杂度都为O(n).
(四)测试结果
X:
=(-b+(b^2-4*a*c)^0.5)/(2*a)
(5)用户手册
打开界面后,根据提示,输入代数表达式,包括包括数字和用字母表示的数,运算符号+-*/^=及括号。
输入完毕回车后系统将显示表达式的前缀式,中缀式,后缀式。
(六)附录
源程序:
#include<
stdio.h>
stdlib.h>
#include<
string.h>
typedefstructBiNode
chars[20];
structBiNode*lchild,*rchild;
charch,bt[1024];
intlen=0;
voidpush(charc)
if(len<
1024)
bt[len++]=c;
}
BiTreeT,Q,S;
char*p;
while(ch!
=EOF)
{
ch=getchar();
if(ch=='
\n'
)
{
if(len>
0)
{
//输入结束,堆栈中为右节点的值
if((Q=(BiTNode*)malloc(sizeof(BiTNode)))==NULL)
returnNULL;
memset(Q->
s,0x00,sizeof(Q->
s));
Q->
lchild=NULL;
rchild=NULL;
memcpy(Q->
s,bt,len);
len=0;
returnQ;
}
returnNULL;
}
elseif(ch=='
('
)
if((Q=(BiTNode*)malloc(sizeof(BiTNode)))==NULL)
memset(Q->
Q->
rchild=NULL;
lchild=Create_RTree();
ch=getchar();
if(ch=='
)returnQ;
s[0]=ch;
rchild=Create_RTree();
returnQ;
elseif(ch=='
)'
len=0;
+'
||ch=='
-'
||ch=='
*'
/'
^'
if((T=(BiTNode*)malloc(sizeof(BiTNode)))==NULL)
returnNULL;
memset(T->
s,0x00,sizeof(T->
T->
if(len==0)
if(ch=='
{
//只有+-号前面可以不是数字,此时左节点为空
T->
if((S=(BiTNode*)malloc(sizeof(BiTNode)))==NULL)
returnNULL;
memset(S->
s,0x00,sizeof(S->
S->
p=S->
s;
while
(1)
{
ch=getchar();
if(ch=='
break;
*p++=ch;
}
rchild=S;
}
else
}
else
//堆栈中为左节点值
memcpy(T->
lchild=T;
if((Q->
rchild=Create_RTree())==NULL)
else
}else
push(ch);
}
returnNULL;
BiTNode*Create_RootTree()
BiTreeQ,T;
while((ch=getchar())!
=EOF)
if(ch=='
elseif(ch=='
:
'
)//构造根节点:
=
if(ch!
='
)returnNULL;
memcpy(Q->
len=0;
lchild=NULL;
lchild=Q;
memcpy(T->
s,"
="
2);
//继续处理:
=后面的数据,作为根节点的右节点
if((T->
rchild=Create_RTree())==NULL)
returnT;
}
if(T)
printf("
%s"
T->
s);
PreOrderTraverse(T->
lchild);
rchild);
else
return;
InOrderTraverse(T->
PostOrderTraverse(T->
intmain()
printf("
请输入一个中缀表达式:
\n"
);
BiTreeT=NULL;
if((T=Create_RootTree())==NULL)
return0;
先序遍历:
"
PreOrderTraverse(T);
中序遍历:
InOrderTraverse(T);
后序遍历:
PostOrderTraverse(T);
return0;
测试数据结果:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 二叉 实验 报告