- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数据结构课程设计报告
题目:实现二叉树的叶子结点按从左到右的顺序连成一个单链表
采用的方法:二叉树按lchild - rchild 的方式存储,链接时用叶子结点的rchild 域存放指针。
班 级: 计算机091班
姓 名: 李盛闻
指导教师: 董跃华、井福荣
成 绩:__________________________
信息工程学院
2011年 6月 13日
目 录
摘要(题目) 3
1.引言 3
2.需求分析 4
3.概要设计 4
4.详细设计 6
5.测试结果 11
6.调试分析 11
7.设计体会 12
8.结束语 13
参考文献 13
附录 13
摘要(题目):
实现二叉树的叶子结点按从左到右的顺序连成一个单链表。二叉树按lchild - rchild 的方式存储,链接时用叶子结点的rchild 域存放指针。假设二叉树中结点的元素均为单个字符。首先输入一个根结点,若输入的是“#”字符,表示该二叉树为空树,即root=NULL;否则向系统申请结点空间,由root指向该结点,把输入的字符赋给root-data,之后,依次递归地建立它的左子树root-lchild和右子树root-rchild。本题目的思路是,输入数据、遍历二叉树、判断是否为叶子结点、创建由叶子结点组成的单链表、输出。
1.引言:
通过本门课程的学习,我们应该能透彻地理解各种数据对象的特点,学会数据的组织方法和实现方法,并进一步培养良好的程序设计能力和解决实际问题的能力,而且该课程的研究方法对我们学生在学校和离校后的工作和学习,也有重要意义。数据结构是电子信息科学与技术专业的一门核心专业基础课程,在该专业的课程体系中起着承上启下的作用,学好了数据结构对于提高理论认知水平和实践能力有着极为重要的作用。学习数据结构的最终目的是为了获得求解问题问能力。对于现实世界中的问题,应该能从中抽象出一个适当的数学模型,该数学模型在计算机内部的数据结构来表示,然后设计一个解此数学模型的算法,在进行编程调试,最后活的问题的解答。基于此原因,现在我们开设数据结构课程设计。针对数据结构课程的特点,着眼于培养我们的实践能力。
2.需求分析:
本题目要求实现二叉树的叶子结点按从左到右的顺序连成一个单链表。首先将数据i键盘输入,这时要对输入的数据进行一个判断,不妨设计如果输入数据不是“0”,则将数据插入到排序二叉树中,如果输入数据是“0”,则遍历二叉树。然后判断结点是否为叶子结点,如果不是叶子结点,则返回数值;如果是叶子结点,则将叶子结点依次接到头结点后。最后输出由二叉树叶子结点创建的链表。程序中,输入的数据要为整型,如果输入整型以外的数据类型,程序将进入循环。
3.概要设计:
对题目进行算法模块描述,流程图如下:
图1 - 1
4.详细设计:
定义结构体:
typedef struct xiaofei
{
int data;
struct xiaofei *lchild,*rchild;//定义结点的左右指针
}test;
xiaofei *root,*p,*q[max],*head,*first;
int sum=0;
int m=sizeof(test);//生成二叉排序树
void insert_data(int x)
{
xiaofei *p,*q,*s;
s=(test*)malloc(m);
s-data=x;
s-lchild=NULL;
s-rchild=NULL;
if(!root)
{
root=s;
}
p=root;
接入二叉排序树的适当位置的算法:
while(p)
{
q=p;
if(p-data==x)
{
printf(data already exist!\n);
return;
}
else if(xp-data)
p=p-lchild;
else
p=p-rchild;
}
if(xq-data)
q-lchild=s;
else
q-rchild=s;
}
将二叉树叶子结点利用指针rchild生成单链表的算法:
void PreOrderTraverse(xiaofei *root)//先序遍历二叉树
{
xiaofei *n;
n=root;
if(!n)return;
if(n-lchild==N
文档评论(0)