均值算法实验报告.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

实验报告

PAGE7

均值算法实验——数据结构实验报告

目录

TOC\o1-3\h\z\u501一、实验目的 1

2035二、实验内容 1

32296三、简要原理 1

11115四、程序代码 2

15019五、调试过程 5

13245六、实验数据及测量结果 5

20549七、结果讨论及心得 6

12007结果讨论: 6

21503心得: 6

一、实验目的

假设N个整数的数组,对其进行统计分析,删除其中最大与最小的a%部分数据(1>a≥0),对剩余数据求平均值,并输出。

二、实验内容

将问题细分为几个部分,分别用函数编写。

1.定义链表节点结构体,创建新节点,插入节点到链表尾部

2.找到链表中的最大与最小值

3.删除链表中最大与最小的a%数据(a为小数)

4.计算链表中剩余数据的平均值

5.释放链表内存

6.主函数main,实现N的输入,链表元素的输入,调用子函数,输出均值。

三、简要原理

1.定义了链表节点结构体Node,包含整数数据和指向下一个节点的指针。

2.createNode函数用于创建新节点,分配内存并初始化节点的数据和指针。

3.insertNode函数用于将新节点插入到链表的尾部。

4.findMinMax函数用于找到链表中的最大和最小值。

5.deleteMinMaxData函数根据输入的百分比参数删除链表中的最大和最小值的节点。

6.calculateAverage函数用于计算链表中剩余数据的平均值。

7.freeList函数用于释放链表占用的内存。

8.main函数主要用于输入数组元素、百分比参数,并调用前面定义的函数进行数据处理和计算。最终输出剩余数据的平均值。

需要注意的地方:

在输入数组元素时,程序只接受了整数类型的输入,没有做任何错误处理,若输入非整数会导致错误。

删除最大和最小值的节点时,只考虑了如果最大或最小值出现多次的情况,可能出现的问题是如果最大值和最小值相同,则无法正确处理。

在计算平均值时,没有考虑除数为0的情况,可能会导致除零错误。建议在计算之前先判断链表是否为空。

总体来说,这段代码实现了对链表中存储整数数组的基本统计分析功能,但仍有一些潜在的问题需要注意和改进。可以根据实际需求对代码进行调整和优化。

四、程序代码

#includestdio.h

#includestdlib.h

//定义链表节点结构体

typedefstructNode{

intdata;

structNode*next;

}Node;

//创建新节点

Node*createNode(intdata){

Node*newNode=(Node*)malloc(sizeof(Node));

newNode-data=data;

newNode-next=NULL;

returnnewNode;

}

//插入节点到链表尾部

voidinsertNode(Node**head,intdata){

Node*newNode=createNode(data);

if(*head==NULL){

*head=newNode;

}else{

Node*temp=*head;

while(temp-next!=NULL){

temp=temp-next;

}

temp-next=newNode;

}

}

//找到链表中的最大与最小值

voidfindMinMax(Node*head,int*min,int*max){

Node*current=head;

*min=current-data;

*max=current-data;

while(current!=NULL){

if(current-data*min){

*min=current-data;

}

if(current-data*max){

*max=current-data;

}

current=current-next;

}

}

//删除链表中最大与最小的a%数据(a为小数)

voiddeleteMinMaxData(Node**head,floatperc

文档评论(0)

***** + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档