杭电软件技术基础实验报告.pdfVIP

  1. 1、本文档共25页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 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)

187****2744 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档