- 1、本文档共25页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
《软件技术基础》
上机实验报告
2018至2019学年,第1学期
学生姓名:***
班级:***
学号:***
授课教师:***
指导教师:***
报告完成时间:2018年12月9日
实验一:链式二叉排序树的创建和遍历
一.实验目的和要求
1.加深理解数据结构的目的和概念,以及逻辑结构和物理结构的关系;
2.练习数据结构操作算法的编程实现;
3.练习链表的程序设计,掌握二叉链表的设计技术;
4.练习递归函数的设计方法;
5.巩固二叉排序树的概念;
6.熟悉软件功能的分析设计方法。
二.功能分析与设计
利用C或C++,设计程序,定义二叉链表,存储二叉排序树,声明并定义相应的函数,实现链
式二叉排序树的下列操作:
1.输入数据个数DataCount(要求在10和20之间)和数据最大值MaxData(在50和100之
间)。
算法实现:该任务需要限制输入的DataCount在10和20之间,MaxData在50和100之间,只
有当两者均满足要求时,程序才会向下执行。若不满足时,会提示“输入不正确,请重新输入!”,
并继续输入DataCount和MaxData,直至满足要求。这里用while(1)死循环,不得到正确输入不退出。
部分代码如下:
while(1)
{
请输入请输入
请输入请输入
if(DataCount=10DataCount=20Maxdata=50Maxdata=100)break;
输入不正确,请重新输入输入不正确,请重新输入
fflush(stdin);//清空输入
}
2.在0和MaxData之间,随机产生DataCount个不重复的整数,按产生先后顺序形成一个数据
序列,并输出该序列。
算法实现:因为输入的DataCount具有随机性,数组的长度无法确定,因此想到要申请分配动
态数组。这里需要在0和MaxData之间,随机产生DataCount个不重复的整数,使用c语言中的rand
语句,生成一组随机数,并赋值给数组。要保证不重复,引入下表j,若两数相等,则i自减,继续
产生数据。
部分代码如下:
if((arr=(int*)malloc(DataCount*sizeof(int)))==NULL)//申请动态数组
{
分配内存空间失败,程序退出!分配内存空间失败,程序退出!
return0;
}
for(i=0;iDataCount;i++)//向申请成功的数组中赋值
{
arr[i]=rand()%(Maxdata+1);
for(j=0;ji;j++)//保证随机数不重复
if(arr[i]==arr[j])
i--;
}
输出不重复的数据序列:输出不重复的数据序列:
for(i=0;iDataCount;i++)//输出不重复的数据序列
3.利用上述数据序列,创建一个二叉排序树。
算法实现:首先需要定义节点数据结构,然后根据二叉排序树的特点(左子树节点值小于根节点
值,右子树节点值大于等于根节点值),定义插入二叉排序树的insertTree
文档评论(0)