数据挖掘实验报告-数据预处理
数据挖掘实验报告

数据挖掘实验报告一、引言。
数据挖掘作为一种从大量数据中发现隐藏模式和信息的技术,已经被广泛应用于各个领域。
本实验旨在通过对给定数据集的分析和挖掘,探索其中潜在的规律和价值信息,为实际问题的决策提供支持和参考。
二、数据集描述。
本次实验使用的数据集包含了某电商平台上用户的购物记录,其中包括了用户的基本信息、购买商品的种类和数量、购买时间等多个维度的数据。
数据集共包括了10000条记录,涵盖了近一年的购物数据。
三、数据预处理。
在进行数据挖掘之前,我们首先对数据进行了预处理。
具体包括了数据清洗、缺失值处理、异常值处理等步骤。
通过对数据的清洗和处理,保证了后续挖掘分析的准确性和可靠性。
四、数据分析与挖掘。
1. 用户购买行为分析。
我们首先对用户的购买行为进行了分析,包括了用户购买的商品种类偏好、购买频次、购买金额分布等。
通过对用户购买行为的分析,我们发现了用户的购买偏好和消费习惯,为电商平台的商品推荐和营销策略提供了参考。
2. 商品关联规则挖掘。
通过关联规则挖掘,我们发现了一些商品之间的潜在关联关系。
例如,购买商品A的用户80%也会购买商品B,这为商品的搭配推荐和促销活动提供了依据。
3. 用户价值分析。
基于用户的购买金额、购买频次等指标,我们对用户的价值进行了分析和挖掘。
通过对用户价值的评估,可以针对不同价值的用户采取个性化的营销策略,提高用户忠诚度和购买转化率。
五、实验结果。
通过对数据的分析和挖掘,我们得到了一些有价值的实验结果和结论。
例如,发现了用户的购买偏好和消费习惯,发现了商品之间的关联规则,发现了用户的不同价值等。
这些结论为电商平台的运营和管理提供了一定的参考和决策支持。
六、结论与展望。
通过本次实验,我们对数据挖掘技术有了更深入的理解和应用。
同时,也发现了一些问题和不足,例如数据质量对挖掘结果的影响,挖掘算法的选择和优化等。
未来,我们将继续深入研究数据挖掘技术,不断提升数据挖掘的准确性和效率,为更多实际问题的决策提供更有力的支持。
数据挖掘实验报告结论(3篇)

第1篇一、实验概述本次数据挖掘实验以Apriori算法为核心,通过对GutenBerg和DBLP两个数据集进行关联规则挖掘,旨在探讨数据挖掘技术在知识发现中的应用。
实验过程中,我们遵循数据挖掘的一般流程,包括数据预处理、关联规则挖掘、结果分析和可视化等步骤。
二、实验结果分析1. 数据预处理在实验开始之前,我们对GutenBerg和DBLP数据集进行了预处理,包括数据清洗、数据集成和数据变换等。
通过对数据集的分析,我们发现了以下问题:(1)数据缺失:部分数据集存在缺失值,需要通过插补或删除缺失数据的方法进行处理。
(2)数据不一致:数据集中存在不同格式的数据,需要进行统一处理。
(3)数据噪声:数据集中存在一些异常值,需要通过滤波或聚类等方法进行处理。
2. 关联规则挖掘在数据预处理完成后,我们使用Apriori算法对数据集进行关联规则挖掘。
实验中,我们设置了不同的最小支持度和最小置信度阈值,以挖掘出不同粒度的关联规则。
以下是实验结果分析:(1)GutenBerg数据集在GutenBerg数据集中,我们以句子为篮子粒度,挖掘了林肯演讲集的关联规则。
通过分析挖掘结果,我们发现:- 单词“the”和“of”在句子中频繁出现,表明这两个词在林肯演讲中具有较高的出现频率。
- “and”和“to”等连接词也具有较高的出现频率,说明林肯演讲中句子结构较为复杂。
- 部分单词组合具有较高的置信度,如“war”和“soldier”,表明在林肯演讲中提到“war”时,很可能同时提到“soldier”。
(2)DBLP数据集在DBLP数据集中,我们以作者为单位,挖掘了作者之间的合作关系。
实验结果表明:- 部分作者之间存在较强的合作关系,如同一研究领域内的作者。
- 部分作者在多个研究领域均有合作关系,表明他们在不同领域具有一定的学术影响力。
3. 结果分析和可视化为了更好地展示实验结果,我们对挖掘出的关联规则进行了可视化处理。
通过可视化,我们可以直观地看出以下信息:(1)频繁项集的分布情况:通过柱状图展示频繁项集的分布情况,便于分析不同项集的出现频率。
数据挖掘实验报告

数据挖掘实验报告数据挖掘是一门涉及发现、提取和分析大量数据的技术和过程,它可以揭示出隐藏在数据背后的模式、关系和趋势,对决策和预测具有重要的价值。
本文将介绍我在数据挖掘实验中的一些主要收获和心得体会。
实验一:数据预处理在数据挖掘的整个过程中,最重要的一环就是数据预处理。
数据预处理包括数据清洗、数据集成、数据转换和数据规约等步骤,目的是为了提高数据的质量和可用性。
首先,我对所使用的数据集进行了初步的观察和探索。
发现数据集中存在着一些缺失值和异常值。
为此,我使用了一些常见的缺失值处理方法,如均值替代、中值替代和删除等。
对于异常值,我采用了离群值检测和修正等方法,使得数据在后续的分析过程中更加真实可信。
其次,我进行了数据集成的工作。
数据集合并是为了整合多个来源的数据,从而得到更全面和综合的信息。
在这个过程中,我需要考虑数据的一致性和冗余情况。
通过采用数据压缩和去重等技术,我成功地完成了数据集成的工作。
接着,我进行了数据转换的处理。
数据转换是为了将原始的数据转换成适合数据挖掘算法处理的形式。
在这个实验中,我采用了数据标准化和归一化等方法,使得不同属性之间具备了可比性和可计算性,从而便于后续的分析过程。
最后,我进行了数据规约的操作。
数据规约的目的在于减少数据的维数和复杂度,以提高数据挖掘的效果。
在这个阶段,我采用了主成分分析和属性筛选等方法,通过压缩数据集的维度和减少冗余属性,成功地简化了数据结构,提高了挖掘效率。
实验二:关联规则挖掘关联规则挖掘是数据挖掘中常用的一种方法,它用于发现数据集中项集之间的关联关系。
在这个实验中,我使用了Apriori算法来进行关联规则的挖掘。
首先,我对数据进行了预处理,包括数据清洗和转换。
然后,我选择了适当的最小支持度和最小置信度阈值,通过对数据集的扫描和频繁项集生成,找出了数据集中的频繁项集。
接着,我使用了关联规则挖掘算法,从频繁项集中挖掘出了具有一定置信度的关联规则。
在实验过程中,我发现挖掘出的关联规则具有一定的实用性和可行性。
数据挖掘实验报告-数据预处理

数据挖掘实验报告-数据预处理数据挖掘实验报告数据预处理一、实验目的本次实验的主要目的是深入了解和掌握数据预处理在数据挖掘过程中的重要性及相关技术,通过对实际数据集的处理,提高数据质量,为后续的数据挖掘和分析工作奠定良好的基础。
二、实验背景在当今数字化时代,数据的规模和复杂性不断增加,而原始数据往往存在着各种问题,如缺失值、噪声、异常值、不一致性等。
这些问题如果不加以处理,将会严重影响数据挖掘算法的性能和结果的准确性。
因此,数据预处理成为了数据挖掘过程中不可或缺的重要环节。
三、实验数据集本次实验使用了一个名为“销售数据”的数据集,该数据集包含了某公司在过去一年中不同产品的销售记录,包括产品名称、销售日期、销售数量、销售价格、客户信息等字段。
四、数据预处理技术(一)数据清洗1、处理缺失值首先,对数据集中的缺失值进行了识别和分析。
通过观察发现,“客户信息”字段存在部分缺失。
对于这些缺失值,采用了两种处理方法:一是如果缺失比例较小(小于5%),直接删除含有缺失值的记录;二是如果缺失比例较大,采用均值填充的方法进行补充。
2、处理噪声数据数据中的噪声通常表现为数据中的错误或异常值。
通过对销售数量和销售价格的观察,发现了一些明显不合理的数值,如销售数量为负数或销售价格过高或过低的情况。
对于这些噪声数据,采用了基于统计的方法进行识别和处理,将超出合理范围的数据视为噪声并进行删除。
(二)数据集成由于原始数据集可能来自多个数据源,存在着重复和不一致的问题。
在本次实验中,对“销售数据”进行了集成处理,通过对关键字段(如产品名称、销售日期)的比较和合并,消除了重复的记录,并确保了数据的一致性。
(三)数据变换1、数据标准化为了消除不同字段之间量纲的影响,对销售数量和销售价格进行了标准化处理,使其具有可比性。
2、数据离散化对于连续型的数据字段,如销售价格,采用了等宽离散化的方法将其转换为离散型数据,以便于后续的数据挖掘算法处理。
数据挖掘实验报告-数据预处理

数据挖掘实验报告(一)数据预处理姓名:李圣杰班级:计算机1304学号:02一、实验目的1.学习均值平滑,中值平滑,边界值平滑的基本原理2.掌握链表的使用方法3.掌握文件读取的方法二、实验设备PC一台,dev-c++三、实验内容数据平滑假定用于分析的数据包含属性age。
数据元组中age的值如下(按递增序):13, 15, 16, 16, 19, 20, 20, 21, 22, 22, 25, 25, 25, 25, 30, 33, 33, 35, 35, 35, 35, 36, 40, 45, 46, 52, 70。
使用你所熟悉的程序设计语言进行编程,实现如下功能(要求程序具有通用性):(a) 使用按箱平均值平滑法对以上数据进行平滑,箱的深度为3。
(b) 使用按箱中值平滑法对以上数据进行平滑,箱的深度为3。
(c) 使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3。
四、实验原理使用c语言,对数据文件进行读取,存入带头节点的指针链表中,同时计数,均值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边界较近的边界值五、实验步骤代码#include <>#include <>#include <>#define DEEP 3#define DATAFILE ""#define VPT 10//定义结构体typedef struct chain{int num;struct chain *next;}* data;//定义全局变量data head,p,q;FILE *fp;int num,sum,count=0;int i,j;int *box;void mean();void medain();void boundary();int main (){//定义头指针head=(data)malloc(sizeof(struct chain));head->next=NULL;/*打开文件*/fp=fopen(DATAFILE,"r");if(!fp)exit(0);p=head;while(!feof(fp)){q=(data)malloc(sizeof(struct chain));q->next=NULL;fscanf(fp,"%d",&q->num); /*读一个数据*/p->next=q;p=q;count++;}/* 关闭文件*/fclose(fp);//输出printf("源数据为:\n");printf("共%d箱%d个数据\n",count/DEEP,count);p=head->next;count=1;num=1;while(p!=NULL){if(count==1)printf("箱%d:",num);if(count==DEEP){printf("%d\n",p->num);num++;count=1;}else{printf("%d ",p->num);count++;}p=p->next;}mean();medain();boundary();scanf("%d",&i);return 0;}//均值void mean(){printf("均值平滑后为:");box=(int *)malloc(sizeof(int)*num);p=head->next;count=1;num=0;sum=0;while(p!=NULL){if(count==DEEP){count=1;sum=sum+p->num;box[num]=sum/DEEP;sum=0;num++;}else{sum=sum+p->num;count++;}p=p->next;}for (i=0;i<num;i++){printf("\n箱%d:",i+1);for (j=0;j<DEEP;j++)printf("%d ",box[i]);}p=head->next;printf("\n离群值为:");while(p!=NULL){for(i=0;i<num;i++){for (j=0;j<DEEP;j++){if(abs(p->num-box[i])>(int)VPT){printf("\n箱%d:",i+1);printf("%d ",p->num);}p=p->next;}}}}//中值void medain(){printf("\n中值平滑后为:");p=head->next;count=1;num=0;int mid;while(p!=NULL){if(count==DEEP){box[num]=sum;count=1;num++;}else {if(count==DEEP/2||count==DEEP/2+1) if(DEEP%2){if(count==DEEP/2+1)sum=p->num;}else{if(count==DEEP/2+1)sum=(p->num+mid)/2;elsemid=p->num;}count++;}p=p->next;}for (i=0;i<num;i++){printf("\n箱%d:",i+1);for (j=0;j<DEEP;j++)printf("%d ",box[i]);}}//边界值void boundary(){printf("\n边界值平滑后为:\n");p=head->next;count=1;box=(int *)malloc(sizeof(int)*num*2); num=0;while(p!=NULL){if(count==DEEP){box[2*num+1]=p->num;count=1;num++;}else{if(count==1) {box[2*num]=p->num;}count++;}p=p->next;}p=head->next;count=1;num=0;while(p!=NULL){if(count==1)printf("箱%d:",num);if((p->num-box[2*num])>(box[2*num+1] -p->num)){printf("%d ",box[2*num+1]);}elseprintf("%d ",box[2*num]);if(count==DEEP){printf("\n");count=0;num++;}count++;p=p->next;}}实验数据文件:用空格分开13 15 16 16 19 20 20 21 22 22 25 25 25 25 30 33 33 35 35 35 35 36 40 45 46 52 70六、结果截图。
数据挖掘分类实验详细报告

数据挖掘分类实验详细报告一、引言数据挖掘是从大量数据中提取隐藏在其中的有价值信息的过程。
数据挖掘分类实验是数据挖掘领域中的一项重要任务,其目标是根据已有的数据样本,构建一个能够准确分类未知数据的分类模型。
本报告旨在详细描述数据挖掘分类实验的过程、方法和结果。
二、实验背景本次实验的数据集是一个关于电子商务的数据集,包含了一些与电子商务相关的特征和一个分类标签。
我们的任务是根据这些特征,预测一个电子商务网站上的用户是否会购买某个产品。
三、数据预处理在进行数据挖掘实验之前,我们需要对数据进行预处理。
首先,我们检查数据集是否存在缺失值或异常值。
对于缺失值,我们可以选择删除含有缺失值的样本,或者使用插补方法进行填充。
对于异常值,我们可以选择删除或者进行修正。
其次,我们对数据进行特征选择,选择与分类目标相关性较高的特征。
最后,我们对数据进行归一化处理,以消除不同特征之间的量纲差异。
四、特征工程特征工程是指根据领域知识和数据分析的结果,构建新的特征或者对原有特征进行转换,以提高分类模型的性能。
在本次实验中,我们根据电子商务领域的经验,构建了以下特征:1. 用户年龄:将用户的年龄分为青年、中年和老年三个年龄段,并进行独热编码。
2. 用户性别:将用户的性别进行独热编码。
3. 用户所在地区:将用户所在地区进行独热编码。
4. 用户购买历史:统计用户过去一段时间内的购买次数、购买金额等指标。
五、模型选择与训练在本次实验中,我们选择了三种常用的分类模型进行训练和比较:决策树、支持向量机和随机森林。
1. 决策树:决策树是一种基于树结构的分类模型,通过划分特征空间,将数据样本划分到不同的类别中。
2. 支持向量机:支持向量机是一种通过在特征空间中构建超平面,将不同类别的样本分开的分类模型。
3. 随机森林:随机森林是一种基于决策树的集成学习方法,通过构建多个决策树,最终根据投票结果进行分类。
我们将数据集划分为训练集和测试集,使用训练集对模型进行训练,使用测试集评估模型的性能。
数据挖掘实验报告

数据挖掘实验报告近年来,数据挖掘技术在各个领域得到了广泛的应用和发展。
作为一种从大量数据中自动或半自动地获取信息的技术手段,数据挖掘已经成为了解决复杂问题的重要工具。
本文就进行的一次数据挖掘实验进行介绍。
一、实验介绍本次实验使用的数据集是某电商平台的用户购买记录。
数据集中主要记录了用户的购买行为,包括商品名称、价格、购买时间、购买数量等。
本次实验旨在对用户购买行为进行分析,以发现用户的消费特点和购物习惯。
二、数据预处理在进行数据挖掘前,首先需要对原始数据进行处理。
本次实验对数据进行了以下处理:1. 数据清洗:去掉重复记录、缺失数据和异常值。
2. 数据转换:将数据转化为适合挖掘的形式,即去除无关数据和重要性较低的数据,并将数据标准化。
3. 数据集成:将多个数据源中的数据集成到一起,以便进行挖掘。
三、数据分析在进行数据分析时,首先需要选择适合的算法对数据进行分析。
本次实验使用了关联规则分析算法和聚类分析算法。
这两个算法对数据进行分析后,可以提取出不同方面的数据,以发现用户的消费特点和购物习惯。
1. 关联规则分析关联规则分析算法是一种从大规模数据中发现如果一个事件出现,另一个事件也经常出现的规则的方法。
本次实验中,通过关联规则分析找出购买某一件商品时,可能会购买的其他商品。
通过分析不同商品之间的关联,可以发现用户的消费行为和购物习惯。
2. 聚类分析聚类分析算法是一种将数据集划分为多个类别的方法,使得每个类别内数据的相似度高于类别间的相似度。
本次实验中,通过聚类分析将用户划分为不同的群组,以进一步发现用户的消费特点和购物习惯。
四、实验结论基于本次实验的数据挖掘分析,得到了以下结论:1. 用户的消费行为和购物习惯对其购买行为有重要影响,需通过分析消费行为和购物习惯来预测和推荐用户购买商品。
2. 不同商品之间具有一定的关联性,可以通过对商品之间的关联进行分析,来推广和营销相关商品。
3. 用户的购买行为和个人特性的关联值得深入研究,可以提供更加个性化的商品推荐服务。
数据挖掘实验报告

数据挖掘实验报告一、实验目的本次数据挖掘实验的主要目的是深入了解数据挖掘的基本概念和方法,并通过实际操作来探索数据中潜在的有价值信息。
二、实验环境本次实验使用了以下软件和工具:1、 Python 编程语言,及其相关的数据挖掘库,如 Pandas、NumPy、Scikitlearn 等。
2、 Jupyter Notebook 作为开发环境,方便进行代码编写和结果展示。
三、实验数据实验所使用的数据来源于一个公开的数据集,该数据集包含了关于_____的相关信息。
具体包括_____、_____、_____等多个字段,数据量约为_____条记录。
四、实验步骤1、数据预处理首先,对原始数据进行了清洗,处理了缺失值和异常值。
对于缺失值,根据数据的特点和分布,采用了平均值、中位数或删除等方法进行处理。
对于异常值,通过箱线图等方法进行识别,并根据具体情况进行了修正或删除。
接着,对数据进行了标准化和归一化处理,使得不同特征之间具有可比性。
2、特征工程从原始数据中提取了有意义的特征。
例如,通过计算某些字段的均值、方差等统计量,以及构建新的特征组合,来增强数据的表达能力。
对特征进行了筛选和降维,使用了主成分分析(PCA)等方法,减少了特征的数量,同时保留了主要的信息。
3、模型选择与训练尝试了多种数据挖掘模型,包括决策树、随机森林、支持向量机(SVM)等。
使用交叉验证等技术对模型进行了评估和调优,选择了性能最优的模型。
4、模型评估使用测试集对训练好的模型进行了评估,计算了准确率、召回率、F1 值等指标,以评估模型的性能。
五、实验结果与分析1、不同模型的性能比较决策树模型在准确率上表现较好,但在处理复杂数据时容易出现过拟合现象。
随机森林模型在稳定性和泛化能力方面表现出色,准确率和召回率都比较高。
SVM 模型对于线性可分的数据表现良好,但对于非线性数据的处理能力相对较弱。
2、特征工程的影响经过合理的特征工程处理,模型的性能得到了显著提升,表明有效的特征提取和选择对于数据挖掘任务至关重要。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据挖掘实验报告(一)
数据预处理
姓名:李圣杰
班级:计算机1304
学号:1311610602
一、实验目的
1.学习均值平滑,中值平滑,边界值平滑的基本原理
2.掌握链表的使用方法
3.掌握文件读取的方法
二、实验设备
PC一台,dev-c++5.11
三、实验内容
数据平滑
假定用于分析的数据包含属性age。
数据元组中age的值如下(按递增序):13, 15, 16, 16, 19, 20, 20, 21, 22, 22, 25, 25, 25, 25, 30, 33, 33, 35, 35, 35, 35, 36, 40, 45, 46, 52, 70。
使用你所熟悉的程序设计语言进行编程,实现如下功能(要求程序具有通用性):
(a) 使用按箱平均值平滑法对以上数据进行平滑,箱的深度为3。
(b) 使用按箱中值平滑法对以上数据进行平滑,箱的深度为3。
(c) 使用按箱边界值平滑法对以上数据进行平滑,箱的深度为3。
四、实验原理
使用c语言,对数据文件进行读取,存入带头节点的指针链表中,同时计数,均值求三个数的平均值,中值求中间的一个数的值,边界值将中间的数转换为离边界较近的边界值
五、实验步骤
代码
#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#define DEEP 3
#define DATAFILE "data.txt" #define VPT 10
//定义结构体
typedef struct chain{
int num;
struct chain *next;
}* data;
//定义全局变量
data head,p,q;
FILE *fp;
int num,sum,count=0;
int i,j;
int *box;
void mean();
void medain();
void boundary();
int main ()
{
//定义头指针
head=(data)malloc(sizeof(struct chain));
head->next=NULL;
/*打开文件*/
fp=fopen(DATAFILE,"r");
if(!fp)
exit(0);
p=head;
while(!feof(fp)){
q=(data)malloc(sizeof(struct
chain));
q->next=NULL;
fscanf(fp,"%d",&q->num); /*读一个数据*/
p->next=q;
p=q;
count++;
}
/* 关闭文件 */
fclose(fp);
//输出
printf("源数据为:\n");
printf("共%d箱%d个数据\n",count/DEEP,count);
p=head->next;
count=1;
num=1;
while(p!=NULL){
if(count==1)printf("
箱%d:",num);
if(count==DEEP){
printf("%d\n",p->num);
num++;
count=1;
}
else{
printf("%d ",p->num);
count++;
}
p=p->next;
}
mean();
medain();
boundary();
scanf("%d",&i);
return 0;
}
//均值
void mean(){
printf("均值平滑后为:");
box=(int
*)malloc(sizeof(int)*num);
p=head->next;
count=1;num=0;
sum=0;
while(p!=NULL){
if(count==DEEP){
count=1;
sum=sum+p->num;
box[num]=sum/DEEP;
sum=0;
num++;
}
else{
sum=sum+p->num;
count++;
}
p=p->next;
}
for (i=0;i<num;i++){
printf("\n箱%d:",i+1);
for (j=0;j<DEEP;j++)
printf("%d ",box[i]);
}
p=head->next;
printf("\n离群值为:");
while(p!=NULL){
for(i=0;i<num;i++)
{
for (j=0;j<DEEP;j++)
{
if(abs(p->num-box[i])>(int)VPT) {
printf("\n箱%d:",i+1);
printf("%d ",p->num);
}
p=p->next;
}
}
}
}
//中值
void medain(){
printf("\n中值平滑后为:");
p=head->next;
count=1;
num=0;
int mid;
while(p!=NULL){
if(count==DEEP){
box[num]=sum;
count=1;
num++;
}
else {
if(count==DEEP/2||count==DEEP/2+1 )
if(DEEP%2){
if(count==DEEP/2+1)
sum=p->num;
}
else{
if(count==DEEP/2+1)
sum=(p->num+mid)/2;
else
mid=p->num;
}
count++;
}
p=p->next;
}
for (i=0;i<num;i++){
printf("\n箱%d:",i+1);
for (j=0;j<DEEP;j++)
printf("%d ",box[i]);
}
}
//边界值
void boundary(){
printf("\n边界值平滑后为:\n");
p=head->next;
count=1;
box=(int
*)malloc(sizeof(int)*num*2);
num=0;
while(p!=NULL){
if(count==DEEP){
box[2*num+1]=p->num;
count=1;
num++;
}
else{
if(count==1) {
box[2*num]=p->num;
}
count++;
}
p=p->next;
}
p=head->next;
count=1;
num=0;
while(p!=NULL){
if(count==1)
printf("箱%d:",num);
if((p->num-box[2*num])>(box[2*num +1]-p->num)){
printf("%d
",box[2*num+1]);
}
else
printf("%d ",box[2*num]);
if(count==DEEP){
printf("\n");
count=0;
num++;
}
count++;
p=p->next;
}
}
实验数据文件:data.txt用空格分开
13 15 16 16 19 20 20 21 22 22 25 25 25 25 30 33 33 35 35 35 35 36 40 45 46 52 70
六、结果截图。