- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构实验五B
《数据结构与算法分析》
实验报告书
学 期: 2014 - 2015 学年第 2 学期
班 级: 信息管理与信息系统2班
学 号: 1310030217
姓 名: 田洪斌
实验类别: ( )基础型 (★)设计型
实验时间:
成 绩:
信息管理系
实验内容
实现程序,按满二叉树给元素编号并输入的方式构造二叉树。
实现程序,构造二叉树的链式存储结构,并完成递归先序、中序、后序遍历操作。
实验目的
掌握二叉树的静态及操作特点;
掌握二叉树的各种遍历方法;
掌握二叉树的存储、线索化等在C语言环境中的实现方法;
掌握哈夫曼树的构造方法及编码方法。
需求分析
用二叉树结构表示来完成输入、编辑、调试、运行的全过程。并规定:
手动输入数字建立二叉树
程序可以输入、调试、运行、显示、遍历
测试数据:用户手动输入的数据
系统设计
1.数据结构设计
在本程序中对二叉树的存储主要用的是顺序存储结构,将二叉树存储在一个一维数组中。数据的输入输出都是采用整型数据进行。在主函数中只是定义数据类型,程序的实现功能化主要是在主函数中通过给要调用的函数参数来实现程序要求的功能。
程序结构设计
(1)程序中主要函数功能:
main()/////////////////////主函数
menu()//////////////////////菜单
PostOrderTraverse(BiTree T)///////////////////////////////后序遍历
InOrderTraverse(BiTree T)/////////////////////////////////中序遍历
PreOrderTraverse(BiTree T)/////////////////////////////先序遍历二叉树
BiTree CreateBiTree()////////////////////////////////////先序建立二叉树
函数调用关系
见图7-1。
图
图7-1 函数关系图
调试分析
1.算法和函数中出现了一些系统无法识别的变量,照成程序出现了错
误。原因是没有注意算法与源程序的区别。算法是简单的对源程序进行描述
的,是给人阅读的,所以有些变量没有定义我们就能看懂。而程序中的变量一定要先定义才能够被引用,才能被计算机识别。
2.在调试过程中遇到问题是利用C++程序进行调试的,找出错误并改正。
3.数据输出函数运行不正常,经检查程序,发现是定义错误,更改后错误排除;
测试结果
1.运行时输入正确密码进入主界面,系统根据输入的数字选项来调用相应的函数。主要实现“功能选择”的界面,在这个界面里有显示系统的五大功能,根据每个功能前面的序号进行选择。以下为该界面:
图7-2 主界面
2.当选择1录入完成输入时,运行结果如下图:
图7-3 二叉树的建立
3.当建立完成输入二叉树的输出时,运行结果如下图:
图7-4二叉树的输出
4.当选择二叉树的先序遍历时,运行结果如下图:
图7-5二叉树的先序遍历
当选择二叉树的中序遍历时,运行结果如下图:
图7-6二叉树的中序遍历
当选择二叉树的后序遍历时,运行结果如下图:
图7-7二叉树的后序遍历
测试中,分别录入2,5,8,3,7,9,1,0,7,3,8,0作为顺序表的初始值,输出数据后显示正常;经测试,本程序达到了先、中、后遍历的预期设计功能,具有一定的健壮性。
经验和体会
本次试验利用C语言编程,完成了二叉树中的建立、输出、先序遍历、中序遍历、后序遍历等功能,提升了我的C语言编程能力,同时也加深了我对数据结构中关于二叉树结构有关基础概念、基本算法的理解,同时,通过程序的调试及观察分析程序运行的情况,也进一步增加了我调试程序的经验,并使我认识到了二叉树的结构。
程序源代码
#include stdio.h
#define ElemType char
//二叉树的二叉链表存储表示
typedef struct BiTNode{
int data;
struct BiTNode *lchild,*rchild;
}BiTNode,*BiTree;
//先序建立二叉树
BiTree CreateBiTree()
{
int x;
BiTree T;
printf(\n请输入数字\n);
scanf(%d,x);
if(x==0)
T=NULL;
文档评论(0)