欢迎来到天天文库
浏览记录
ID:47491085
大小:150.01 KB
页数:15页
时间:2020-01-12
《实验五 查找及排序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、实验五查找及排序实验课程名:数据结构与算法一、实验目的及要求1、掌握查找的不同方法,并能用高级语言实现查找算法。2、熟练掌握顺序表的查找方法和有序顺序表的折半查找算法。3、掌握常用的排序方法,并能用高级语言实现排序算法。4、深刻理解排序的定义和各种排序方法的特点,并能加以灵活运用。5、了解各种方法的排序过程及依据的原则,并掌握各种排序方法的时间复杂度的分析方法。二、实验内容任务一:顺序表的顺序查找。有序表的折半查找。完成下列程序,该程序实现高考成绩表(如下表所示)的顺序查找,在输出结果中显示查找成功与查找不成功信息。准考证号姓名各
2、科成绩总分政治语文外语数学物理化学生物179328何芳芳858998100938047592179325陈红858688100929045586179326陆华78759080958837543179327张平82807898849640558179324赵小怡76859457776944502解答:(1)源代码:#include//EOF(=^Z或F6),NULL#include//atoi()#include//eof()#include//floor(),ce
3、il(),abs()#include//exit()#include//cout,cin//函数结果状态代码#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1//#defineOVERFLOW-2因为在math.h中已定义OVERFLOW的值为3,故去掉此行typedefintStatus;//Status是函数的类型,其值是函数结果状态代码,如OK等typedefintBoolean;//Boolea
4、n是布尔类型,其值是TRUE或FALSE#defineMAX_LENGTH100#include14#include#include//malloc()等#include//INT_MAX等#include//EOF(=^Z或F6),NULL#include//atoi()#include//eof()#include//floor(),ceil(),abs()#include5、ss.h>//exit()#include//cout,cin//函数结果状态代码#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1//#defineOVERFLOW-2因为在math.h中已定义OVERFLOW的值为3,故去掉此行typedefintStatus;//Status是函数的类型,其值是函数结果状态代码,如OK等typedefintBoolean;//Boolean是布尔类型,其值是TRUE或FALSE#def6、ineN5//数据元素个数#defineEQ(a,b)((a)==(b))#defineLT(a,b)((a)<(b))#defineLQ(a,b)((a)<=(b))typedeflongKeyType;//设关键字域为长整型#definekeynumber//定义关键字为准考证号structElemType//数据元素类型(以教科书图9.1高考成绩为例){longnumber;//准考证号,与关键字类型同charname[9];//姓名(4个汉字加1个串结束标志)intpolitics;//政治intChinese;//语文i7、ntEnglish;//英语intmath;//数学intphysics;//物理intchemistry;//化学intbiology;//生物inttotal;//总分};typedefstruct{ElemType*elem;//数据元素存储空间基址,建表时按实际长度分配,0号单元留空intlength;//表长度}SSTable;14voidCreat_Seq(SSTable&ST,ElemTyper[],intn){//操作结果:由含n个数据元素的数组r构造静态顺序查找表STinti;ST.elem=(ElemType*8、)calloc(n+1,sizeof(ElemType));//动态生成n+1个数据元素空间(0号单元不用)if(!ST.elem)exit(ERROR);for(i=1;i<=n;i++)ST.elem[i]=r[i-1];//将数组r的值依次赋
5、ss.h>//exit()#include//cout,cin//函数结果状态代码#defineTRUE1#defineFALSE0#defineOK1#defineERROR0#defineINFEASIBLE-1//#defineOVERFLOW-2因为在math.h中已定义OVERFLOW的值为3,故去掉此行typedefintStatus;//Status是函数的类型,其值是函数结果状态代码,如OK等typedefintBoolean;//Boolean是布尔类型,其值是TRUE或FALSE#def
6、ineN5//数据元素个数#defineEQ(a,b)((a)==(b))#defineLT(a,b)((a)<(b))#defineLQ(a,b)((a)<=(b))typedeflongKeyType;//设关键字域为长整型#definekeynumber//定义关键字为准考证号structElemType//数据元素类型(以教科书图9.1高考成绩为例){longnumber;//准考证号,与关键字类型同charname[9];//姓名(4个汉字加1个串结束标志)intpolitics;//政治intChinese;//语文i
7、ntEnglish;//英语intmath;//数学intphysics;//物理intchemistry;//化学intbiology;//生物inttotal;//总分};typedefstruct{ElemType*elem;//数据元素存储空间基址,建表时按实际长度分配,0号单元留空intlength;//表长度}SSTable;14voidCreat_Seq(SSTable&ST,ElemTyper[],intn){//操作结果:由含n个数据元素的数组r构造静态顺序查找表STinti;ST.elem=(ElemType*
8、)calloc(n+1,sizeof(ElemType));//动态生成n+1个数据元素空间(0号单元不用)if(!ST.elem)exit(ERROR);for(i=1;i<=n;i++)ST.elem[i]=r[i-1];//将数组r的值依次赋
此文档下载收益归作者所有