大数据结构大作业报告材料.docx

上传人:b****7 文档编号:26520847 上传时间:2023-06-20 格式:DOCX 页数:8 大小:44.69KB
下载 相关 举报
大数据结构大作业报告材料.docx_第1页
第1页 / 共8页
大数据结构大作业报告材料.docx_第2页
第2页 / 共8页
大数据结构大作业报告材料.docx_第3页
第3页 / 共8页
大数据结构大作业报告材料.docx_第4页
第4页 / 共8页
大数据结构大作业报告材料.docx_第5页
第5页 / 共8页
点击查看更多>>
下载资源
资源描述

大数据结构大作业报告材料.docx

《大数据结构大作业报告材料.docx》由会员分享,可在线阅读,更多相关《大数据结构大作业报告材料.docx(8页珍藏版)》请在冰豆网上搜索。

大数据结构大作业报告材料.docx

大数据结构大作业报告材料

 

数据结构课程设计

课题名称

 

专业名称

 

学生姓名

 

学号+电话

 

指导教师

 

评分细则

 

 

一、课题描述

  将随机多个整数号数按顺序输出,即编写一个将输入数据从小到大输出的程序。

二、需求分析

本程序用C编写,完成单链表的生成。

2.1输入的形式和输入值的范围:

输入一个数组,要求数组元素为n位整数。

2.2输出的形式:

输出一个按要求位数的数组,要求从小到大排列。

2.3程序所能达到的功能:

完成单链表的生成、顺序表的输出操作。

三、概要设计

3.1数据逻辑结构、存储结构分析。

每两个相邻的数据进行比较,满足某一种条件就交换(大于或者小于),否则不交换,如n个数据比较(n-1)轮排序成功。

本程序借助指针类型来实现链式存储结构。

3.2程序包含的函数:

3.2.1malloc()

malloc向系统申请分配指定size个字节的内存空间。

返回类型是void*类型。

void*表示未确定类型的指针。

分配长度为num_bytes字节的内存块,如果分配成功则返回指向被分配内存的指针(此存储区中的初始值不确定),否则返回空指针NULL。

当内存不再使用时,应使用free()函数将内存块释放。

3.2.2.getchar()

getchar有一个int型的返回值.当程序调用getchar时.程序就等着用户按键.用户输入的字符被存放在键盘缓冲区中.直到用户按回车为止(回车字符也放在缓冲区中).当用户键入回车之后,getchar才开始从stdio流中每次读入一个字符.getchar函数的返回值是用户输入的第一个字符的ASCII码,如出错返回-1,且将用户输入的字符回显到屏幕.如用户在按回车之前输入了不止一个字符,其他字符会保留在键盘缓存区中,等待后续getchar调用读取.

3.2.3list_create()

3.2.4list_disp()

3.2.5list_sort()

四、详细设计

4.1课题分析

由于本次课题要求输出给定位数的有序数组,所以有一下几种方法可选择:

4.1.1选择排序

每一次从待排序的数据元素中选出最小(或最大)的一个元素,存放在序列的起始位置,直到全部待排序的数据元素排完。

不稳定的排序方法。

4.1.2冒泡排序

a.比较相邻的元素。

如果第一个比第二个大,就交换他们两个。

b.对每一对相邻元素作同样的工作,从开始第一对到结尾的最后一对。

在这一点,最后的元素应该会是最大的数。

c.针对所有的元素重复以上的步骤,除了最后一个。

d.持续每次对越来越少的元素重复上面的步骤,直到没有任何一对数字需要比较。

4.1.3堆排序

堆排序(Heapsort)是指利用堆积树(堆)这种数据结构所设计的一种排序算法,它是选择排序的一种。

可以利用数组的特点快速定位指定索引的元素。

4.1.4快速排序

通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。

是对冒泡排序法的一种改进。

4.1.5基数排序

将所有待比较数值(正整数)统一为同样的数位长度,数位较短的数前面补零。

然后,从最低位开始,依次进行一次排序。

这样从最低位排序一直到最高位排序完成以后,数列就变成一个有序序列。

4.1.6希尔排序

希尔排序是插入排序的一种。

也称缩小增量排序,是直接插入排序算法的一种更高效的改进版本。

它是一种非稳定排序算法。

4.1.7归并排序

第一步:

申请空间,使其大小为两个已经排序序列之和,该空间用来存放合并后的序列

第二步:

设定两个指针,最初位置分别为两个已经排序序列的起始位置

第三步:

比较两个指针所指向的元素,选择相对小的元素放入到合并空间,并移动指针到下一位置

重复步骤3直到某一指针超出序列尾,将另一序列剩下的所有元素直接复制到合并序列尾。

4.2课题实现

 由于本次课题要求输入数据少,功能简洁,所以选择使用并不陌生而且简单的冒泡排序法,代码部分如下:

#include

#include

#include

#defineOK1

#defineERROR0

 

typedefstructnode{

intdata;

node*next;

}node,*LinkList;

//nodenode5[5]={{2},{4},{5},{7},{1}};

node*list_create(intnum)

{

LinkListL,p,s;

L=(LinkList)malloc(sizeof(node));

if(!

L)

returnERROR;

L->next=NULL;

p=L;

for(inti=0;i

{

s=(LinkList)malloc(sizeof(node));

scanf("%d",&s->data);

p->next=s;

p=p->next;

p->next=NULL;

}

returnL;

}//p->next=NULL;

intlist_disp(LinkListL)

{

LinkListp;

p=L->next;

while(p!

=NULL)

{

printf("\n%d",p->data);

p=p->next;

}

getchar();

returnOK;

}

intlist_sort(LinkListL,intnum)

{

//LinkListp;

LinkListp=L->next;

inttemp,i,j;

for(i=0;i

{

p=L->next;

for(j=0;j

{

if(p->data>p->next->data)

{

temp=p->data;

p->data=p->next->data;

p->next->data=temp;

}

p=p->next;

}//p=p-1;直接减不行,p是结构体指针,长度不是1

}

printf("\n");

list_disp(L);

returnOK;

}

intmain()

{

intnum=8;

LinkListhead;

head=list_create(num);

list_disp(head);

list_sort(head,8);

getchar();

return0;

}

五、测试数据及结果

当输入6位数时:

369147

屏幕截图:

当输入8位数时:

76916326

六、调试分析及总结

(1)调试过程中遇到的问题以及解决的方法描述。

调试过程中遇见输出格式以及一些其他错误,经过上网搜索和咨询同学之后基本解决了问题。

(2)收获体会。

通过此次课程设计,加深了对数据结构链表排序的理解。

基本了解了冒泡排序法的实现。

同时还了解了一些其他的排序算法,拓宽了知识面。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 动态背景

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1