数据结构_查找、排序的应用实验(2)
scanf("%d",&m);
scanf("%d",&len);
H.sizeindex = len;
for(i = 0;i < m;++i)
{
H.elem[i].flag = 0;
}
printf("请输入该组关键字:");
for(i = 0;i < m;++i)
{
scanf("%d",&keys);
p = keys %m;
while(H.elem[p].flag == 1)//处理冲突
{
int d=1;
p = (p +d)% m;
d++;
}
H.elem[p].key = keys;
H.elem[p].flag = 1;
H.count++;
}
for(int j=H.count;j<len;j++)
H.elem[j].key=0;
printf("哈希表创建完毕!\n");
printf("下标 关键字\n");
for(i = 0;i<len;i++)
{
printf("%d ",i);
printf("%d",H.elem[i].key);
printf("\n");
}
return SUCCESS;
}
void SearchHashTable(HashTable H)
{int keys,p;
printf("请输入您要查找的关键字:\n");
scanf("%d",&keys);
for(int i=0;i<H.count;i++)
{
if( keys == H.elem[i].key)//p是找到的关键字的下标
{
p=i;
}
}
if(p>-1&&p<H.count)
printf("查找成功!\n");
printf("该关键字在哈希表中的下标为:%d \n",p);
}
else
printf("查找失败,表中无此关键字!\n");
}
//堆排序
//筛选
void sift(RecordType r[],int k,int m)
{
int t;
t=r[k].key;
int x=r[k].key;
int i=k;
int j=2*i;
int finished=FALSE;
while(j<=m&&!finished)
{
if(j<m&&r[j].key<r[j+1].key)j=j+1;
if(x>=r[j].key)finished=TRUE;
else{
r[i]=r[j];
i=j;
j=2*i;
}/* 继续筛选*/
}
r[i].key=t;
}/* sift */
//建堆
void crt_heap(RecordType r[],int length)
{
int n=length;
for(int i=n/2;i>=1;--i)
sift(r,i,n);
}
//堆排序
void HeapSort(RecordType r[],int length)
{
crt_heap(r,length);
int n=length;
int b;
for(int i=n;i>=2;--i)
b=r[1].key;
r[1].key=r[i].key;
r[i].key=b;
sift(r,1,i-1);
}
}
//链式基数排序
void Distribute (SLinkList *L,int i,PVector head,PVector tail)
{
int j,p;
for(j=0;j<=RADIX-1;++j)
head[j]=0;
p=L->R[0].next;
while(p)
{
j=L->R[p].key[i];
if(head[j]==0) head[j]=p;
else L->R[tail[j]].next=p;
tail[j]=p;
p=L->R[p].next;
}
}
void Collect(SLinkList *L,PVector head,PVector tail)
{
int j=0,t;
while(head[j]==0)
++j;
L->R[0].next=head[j];t=tail[j];
while(j<RADIX-1)
{
++j;
while((j<RADIX-1)&&(head[j]==0))
++j;
if(head[j]!=0)
{
L->R[t].next=head[j];t=tail[j];
}
}
L->R[t].next=0;
void RadixSort(SLinkList *L )
{
int n,i,d,j,x,k;
printf("输入链表长度 :");
scanf("%d",&(L->length));
printf("输入最大位数 :");
scanf("%d",&(L->keynum));
PVector head,tail;
n=L->length;
for(i=0;i<=n-1;++i) L->R[i].next=i+1;
L->R[n].next=0;
printf("输入各记录 :");
for(j=1;j<=L->length;j++)
{
scanf("%d",&(L->R[j].type));
}
for(i=1;i<=L->length;i++)
{
x=L->R[i].type;
for(j=0;j<L->keynum;j++)
{
L->R[i].key[j]=x%10;
x=x/10;
}
}
d=L->keynum;
for(i=0;i<L->keynum;++i)
{
Distribute(L,i,head,tail);
Collect(L,head,tail);
}
k=0;
printf("排序后为 :");
while(L->R[k].next)
{
printf("%d ",L->R[L->R[k].next].type);
k=L->R[k].next;
}
}
void main()
{
int i,j,select,a,flag=1,m=0;
RecordType r[20];
BSTree bst,result,T;
RecordList L,Q;
int length,k,low;
printf("1 进行顺序查找 \t2 进行直接排序 \t3 进行冒泡排序 \n4 进行快速排序 \t5 对排好序的纪录序列表进行折半查找 \n6 利用原纪录序列建立一颗二叉排序树,并在其上实现特定关键字值结点的查找 \n7 建立哈希表,并对其进行查找\n");
printf("8 简单选择排序 9堆排序 10链式基数排序\n");
printf("0退出");
int symbol(1);
while(flag)
{
printf("\n请选择:");
scanf("%d",&a);
if(a==10)symbol=0;
while(symbol)
{
printf("请输入待排序记录的长度:"); //交互创建纪录表
scanf("%d",&length);
printf("请输入各元素:");
for(i=1;i<=length;i++)
{
fflush(stdin);
scanf("%d",&j);
r[i].key = j;
}
printf("你输入的各元素为:");
for(i=1;i<=length;i++)
printf("%d ",r[i].key);
printf("\n");
symbol=0;
}
switch(a)
{
case 1:
printf("请输入你要查找的元素k:");
fflush(stdin);
scanf("%d",&k);
L.length=length;
{
L.r[i]=r[i];
}
SeqSearch(L,k);
printf("\n");
break;
case 2:
InsSort(r,length);
printf("按直接排序后各元素为:");
for(i=1;i<=length;i++)
printf("%d ",r[i].key);
printf("\n");break;
case 3:
BubbleSort(r,length);
printf("按冒泡排序后各元素为:");
for(i=1;i<=length;i++)
printf("%d ",r[i].key);
printf("\n");
break;
case 4:
L.length=length;
for(i=1;i<=L.length;i++)
{
L.r[i]=r[i] …… 此处隐藏:2678字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




