2023年查询与排序实验报告_第1页
2023年查询与排序实验报告_第2页
2023年查询与排序实验报告_第3页
2023年查询与排序实验报告_第4页
2023年查询与排序实验报告_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

学院专业班学号

姓名协作者教师评估

实验题目查询与排序

综合实验评分表

号评分项目评分标准满分打分

1完毕度按规定独立完毕实验准备、程序调试、实验报告撰写。20

(1)完毕功能需求分析、存储结构设计;

(2)程序功能完善、可正常运营;

2实验内容30

(3)测试数据对的,分析对的,结论对的。

3实验报告内容齐全,符合规定,文理通顺,排版美观。40

对实验过程碰到的问题能初步独立分析,解决后能总结问题

4总结10

因素及解决方法,有心得体会。

实验报告

实验目的与规定

1、掌握散列表的构造及实现散列查找;

2、掌握堆排序的算法;

3、综合比较各类排序算法的性能。

二、实验内容

#1nclude"stdio.h"

#incIude"stdlib.h"

#inc1ude"string.h"

#include"windows.h"

#defineMAX20

typedefstruct{

°unsignedlongkey;

intresuIt;

charname[30];}RNode;

RNOdet[MAX],r[MAX];

inth(unsignedlongk)/*散列函数*/

(

。return((k-)%l1);

voidinsert(RNodet[],RNodex)/*插入函数,以线性探查方法解决冲突*/

。1nti,j=0;

i=h(xkey);

while((j<MAX)&&(t[(i+j)%MAX].key!=x.key)&&(t[(i+j)%MAX].key>0))

j++;

if(j==MAX)printf("fu1l\n");

i=(i+j)%MAX;

»if(t[i].key==0)

…{t[i]=x;}

else

0(

。1f(t[i].key==x.key)

printf("记录已存在!\n“);

)

)

intsearch(RNodet[],unsignedlongk)/*插入函数,以线性探查方法解决冲

突*/

(

inti,j=0;

i=h(k);

°whiIe((j<MAX)&&(t[(i+j)%MAX].key!=k)&&(t[(i+j)%MAX].key!=0))

j++;

。i=(i+j)%MAX;

if(t[i].key==k)

retum(1);

。if(j==MAX)

returnMAX;

。else

»return(-i);

)

voidsift(RNoder[],intv,intw)

(

0int1J;

。RNodea;

。i=v;

°a=r[i];

j=2*1+1;

°while(j<=w)

(

°if((j<w)&&(r[j]result>r[j+l].result))

。j++;

°if(a.result>r[j].resuit)

{r[i]=r[j];i=j;j=2*j+l;}

…elsebreak;

r[i]=a;

)

voidsort(RNoder[],intn)

(

0inti;

°RNodey;

°for(i=n/2-1;i>=0;i--)

°sift(r,i,n-1);

for(i=n-1;i>0;i--)

{y=r[O];r[O]=r[i];r[i]=y;

printf("学生姓名:%s\t学生学号:%u\t学生成绩:%d\n",r[i].name,r[i].key,r[i].

result);

sift(r,0,1-1);

)

printf("学生姓名%s\t学生学号为u\t学生成绩%d\n",r[0].name,r[0].key,r

[0].result);

)

intmenu()/*菜单函数*/

(

intseiect;

printf("\n\n");

printf("\n");

printf("\t\t*************查找排序实验******************\n

printf("\t\t夫\n");

printf("\t\t********欠1卬幺充******************\n")*

printf("\t\t*menu:An");

print*1.查找*\n

printf("\t\t*2.排序An");

printf("\t\t*0.退出*\n");

pr-intf("\t\t*******************************************\n

printf("\n");

printf("\t\t\t请输入0—2\n”);

printf("\n");

printf("请选择您所要的操作(选择(0)退出):”);

scanf("%d",&select);

getchar();

return(select);

voidmain()/*主函数*/

(

inti,s,n,select;

intj=0,m=0;

RNodey;

for(i=0;i<MAX;i++)

t[i].key=O;/*初始化*/

for(i=0;1<10;i++)/*导入记录*/

{

switch(i){

case0:{

RNodex;

x.key=310900***;

°strepy(x.name,”***");

x.resu1t=90;

insert(t,x);

break;}

case1:{

°RNodex;

°x.key=31090***1;

strcpy(x.name,"***");

x.result=95;»

insert(t,x);

break;}

case2:{

6RNodex;

,x.key=3109005***;

°strcpy(x.name,"***");

x.resuIt=92;

insert(t,x);

break;)

case3:{

。。RNodex;

°x.key=31090***;

strcpy(x.name,"***");

x.result=93;

insert(t,x);

break;}

case4:{

RNodex;

x.key=3109005***;

strepy(x.name,"***");

x.resu1t=94;。

1nsert(t,x);

break;}

°case5:{

RNodex;

x.key=310900***;

strcpy(x.name,"***");

°x.result=91;

insert(t,x);

break;}

»case6:{

RNodex;

。xkey=3109005***;

strcpy(x.name***");

»x.result=96;。

insert(t,x);

break;}

case7:{

。RNodex;

x.key=310900***;

°strcpy(,"***");

°x.result=99;

1nsert(t,x);

break;}

case8:{

»RNodex;

»x.key=310900***;

strcpy(x.name,"***");

xresult=98;。

1nsert(t,x);

break;}

«case9:{

°°RNodex;

sx.key=310900***;

strcpy(x.name,"***");

x.result=97;。

insert(t,x);

break;}

)

}

printf("\n\n\n\n\n\n\n");

system("cls");

Ioop:{

。printf("\n\n\n");

se1ect=menu();

switch(select){

case1:{

printf("\n请输入要查找的学生学号:");

scanf("%u",&y.key);

s=search(t,y.key);

if(s==MAX||s<0)printf("notfind\n");

else

{printf("\n\n你要查找的学生信息\n");

printf("学生姓名:%s\t学生学号:%u",t[s].name,t[s].key);}

break;}

。case2:{

°for(i=0;1<MAX;i++)

°{if(t[i].key!=0)

0(

。r[j++]=t[i];

»m++;

00}

)

printf("排序之前:\n\n");

»for(i=0;i<m;i++)

0printf("学生姓名:%s\t学生学号:%u\t学生成绩:%d\n",r[i].name,r[i].ke

y,r[i].result);

printf("\n排序之后:\n");

osort(r,m);

break;

)

case0:exit(0);

)

getchar();

goto1oop;

)

)

三、实验结果和数据解决

(1)查找数据(310900****)

(2)排序

四、总结

这次的课程实验完毕了主控界面,录入,输出,排序,查找,结束界面等功能。在程

序调试过程之中,我还是个初学者,在编写程序

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论