树的孩子兄弟存储法求树的高度宽度结点数叶子数.docx
《树的孩子兄弟存储法求树的高度宽度结点数叶子数.docx》由会员分享,可在线阅读,更多相关《树的孩子兄弟存储法求树的高度宽度结点数叶子数.docx(8页珍藏版)》请在冰豆网上搜索。
树的孩子兄弟存储法求树的高度宽度结点数叶子数
树的孩子兄弟存储法求树的高度、宽度、结点数、叶子数
摘要
C是一种通用的程序设计语言,C语言在很多方面继承和发展了以往许多高级程序设计语言的成功经验和特色,具有书写格式自由、数据类型丰富、语句功能强大、执行速度快和存储控制能力强等优点。
学生信息管理系统设计是关于对学生各种信息管理来设计的一个系统。
整个系统从符合操作简便、界面友好、灵活、实用、安全的要求出发,完成学生信息管理的全过程,包括创建学生信息、查找学生信息、修改学生信息、插入学生信息、删除学生信息、按平均分或者总分排序、统计学生信息等工作。
本课程主要介绍了本课题的开发背景,所要完成的功能和开发的过程。
重点说明了系统的设计思路、总体设计、各个功能模块的设计与实现方法。
关键词:
学生管理系统,C语言,数据结构,Wintc
1课题背景介绍
1.1课题背景
随着网络技术的迅速发展,各种行业纷纷应用网络技术操作和管理。
当然学校是一个很大的管理系统,随着学生的大量增加,其管理难度也越来越大,如何对学生的个人信息进行更好的管理,这就是我们研究这个课题的目的。
在计算机迅速发展的今天,将计算机这一信息处理器应用于学生的个人信息管理已是势必所然,而且这也将学生信息管理带来前所未有的改变。
采用计算机对学生的信息管理是信息科学化和现代化的重要标志,它也给各大高校带来了明显的社会效益。
主要体现在:
极大地提高了管理工作人员的工作效率,大大地减少了以往的资料室所存在的各种弊端,同时也加强和规范学习对于学生信息的管理。
为了能够更好的来实现对学生信息的管理,通过对学生信息管理日常工作的详细调查,搜集了大量的资料,从系统结构的组织,功能的实现,技术的要求以及可行性等多方面进行考虑,认为本课题是一个适应现今学校学生个人信息管理需求的计算机信息管理系统,具有一定的实际开发价值和使用价值。
1.2目的
本课题运用C语言进行开发,C语言能够简单的进行编译一些程序,来实现对一些问题的解决。
它虽然比较简单的处理一些问题,但却有更高的效率。
它能够被大多数用户所接受,因为它能够呈现出清晰的界面,是人们能够很好的理解。
能在一些方面给人们更好的服务,成为人们的好帮手。
经过这一个学期对《数据结构》的学习,我们都学到了不少东西,可能有些学的还不够理想,但无论如何这些知识都为我们的下一步学习打下了坚实的基础。
做这么一个课程设计,一方面是为了检查我们一个学期以来的学习成果,另一方面也是为了让我们进一步的掌握和运用它,同时也让我们认清自己的不足之处和薄弱环节,加以弥补和加强。
2需求分析
随着学校规模的发展扩大,学校要向着大型化,规模化发展,而对于学生信息管理系统有关的信息随之增加。
在这种情况下单靠人工来处理学生的信息不但显得大不从心,而且极容易出错。
因此,需要开发学生管理系统,该系统可以实现由计算机代替人工执行一系列复杂而繁琐的操作,使得学校管理人员可以轻松快捷的完成学生信息管理的任务。
2.1数据需求分析
本系统的主要是使用算法设计利用孩子兄弟存储求树的结点数、叶子数、高度、宽度、树的度。
2.2功能需求分析
本系统主要实现对学生成绩信息进行管理,需要实现以下几个方面的管理功能:
(1)创建树
(2)求树的结点数。
(3)求树的高度。
(4)求树的叶子树。
(5)求树的宽度。
3系统总体设计
3.1系统模块划分
本系统主要是对树的孩子兄弟存储法求树的各项运算。
整个系统分为以下几
3.2系统模块结构图
根据系统功能设计,对应的系统模块结构图如图1所示:
图1系统模块结构图
4系统详细设计
通过对该系统设计的了解与讨论,同时也为了广大使用者的方便与快捷。
我们最后设计了这样的一个界面。
首先要让使用者明白怎样使用此系统。
这就需要通过界面来给他们一个清晰而明白的空间。
而我们设计的这个界面恰好符合了这一要求。
通过调用界面函数来使使用者能够很方便的进行查询、插入等操作。
4.1创建孩子兄弟存储法
定义树的结构体
Typedefstructnode{
Chardata;
StructCSNode*lchild,*rchild;
}BiNode,*BiTree;
4.2计算结点数
利用二叉链表的存储法求树的结点个数。
intcount(BiNode*t)
{
intnum1,num2;
if(t==NULL)
return0;
else
{
num1=count(t->lchild);
num2=count(t->rchild);
return(num1+num2+1);
}
}
4.3计算树的高度
/*求树的高度*/
intheight(CSTreet)
{
intldeep,rdeep;
if(t==NULL)
return0;
t=t->lchild;
if(t==NULL)
return1;
else
{
ldeep=height(t->lchild);
rdeep=height(t->rchild);
return(ldeep>rdeep)?
(ldeep+2):
(rdeep+2);
}
}
4.4计算树的叶子数
/*计算树的叶子数*/
intleafCount(BTNode)
{
intnum1,num2;
if(t==NULL)
return0;
elseif(t->lchild==NULL)
return1;
else
{
t=t->lchild;
num1=leafCount(t->lchild);
num2=leafcount(t->rchild);
return(num1+num2+1);
}
}
}
4.5计算树的宽度
intWidth(BiTreeT)
{
intstaticn[100];//向量存放各层结点数
intstatici=1;//控制层数
intstaticmax=0;//最大宽度
if(T)
{
if(i==1)//若是访问根结点
{
n[i]++;//第1层加1
i++;//到第2层
if(T->lchild)//若有左孩子则该层加1
n[i]++;
if(T->rchild)//若有右孩子则该层加1
n[i]++;
}
else//访问子树结点
{
i++;//下一层结点数
if(T->lchild)
n[i]++;
if(T->rchild)
n[i]++;
}
if(maxmax=n[i];//取出最大值
Width(T->lchild);//遍历左子树
i--;//往上退一层
Width(T->rchild);//遍历右子树
}
returnmax;
}
总结
本设计实现的功能:
成绩信息录入、成绩信息的管理等。
并达到操作过程中的直观、方便、实用、安全等要求。
系统采用模块化程序设计的方法,既便于系统功能的组合和修改,又便于未参与系统开发的技术维护人员补充和维护。
本系统经过测试,证明其运行是稳定、可靠的。
但在系统设计中也也遇到很多的问题,并且本系统的功能还需要不断的完善和改进,在以后空闲时间里逐一进行完善,使系统功能更加完善,使本软件能够更好的为大中型企业服务,创造更大的社会价值。
参考文献
[1]谭浩强.C程序设计[M].北京:
清华大学出版社.2005.
[2]严蔚敏.数据结构(C语言版)[M].北京:
清华大学出版社.2008.
[3]陈雁.数据结构[M].北京:
高等教育出版社,2004.
[4]张磊.C程序设计教程.北京:
中国铁道出版社.2007.