资源简介
30个中国人姓名拼音,设计Hash表,平均查找长度不超过2,用除留余数法构造,用线性探测再散列,二次探测再散列和链地址法处理冲突。完成建表和查表操作。本人的课程设计作业
代码片段和文件信息
#include
#include
#include
#include
#define HASH_LENGTH 50 //哈希表的长度
#define M 47 //随机数
#define NAME_NO 30 //人名的个数
typedef struct
{ char *py; //名字的拼音
int k; //拼音所对应的整数
}NAME;
NAME NameList[HASH_LENGTH]; //全局变量NAME
typedef struct //哈希表
{ char *py; //名字的拼音
int k; //拼音所对应的整数
int si; //查找长度
}HASH;
HASH HashList1[HASH_LENGTH]HashList2[HASH_LENGTH]; //全局变量HASH
typedef struct node{
char *py;
int k;
int si;
struct node *next;
}NODE*Nodeptr;
NODE HashList3[HASH_LENGTH];
void InitNameList() //姓名(结构体数组)初始化
{ char *f;
int rs0i;
NameList[0].py=“chenhong“;
NameList[1].py=“fanghuaxia“;
NameList[2].py=“geyuhao“;
NameList[3].py=“houjie“;
NameList[4].py=“jinxiangcheng“;
NameList[5].py=“liuxiaozhen“;
NameList[6].py=“panning“;
NameList[7].py=“songjunrong“;
NameList[8].py=“tangwenchao“;
NameList[9].py=“wanglinna“;
NameList[10].py=“xijianxin“;
NameList[11].py=“yangpei“;
NameList[12].py=“wujingqiu“;
NameList[13].py=“zhoufanya“;
NameList[14].py=“zhuyong“;
NameList[15].py=“biyunpeng“;
NameList[16].py=“hanfen“;
NameList[17].py=“guojing“;
NameList[18].py=“xiaorui“;
NameList[19].py=“peiruoxuan“;
NameList[20].py=“wenruiyan“;
NameList[21].py=“luxun“;
NameList[22].py=“jiangfang“;
NameList[23].py=“fujunning“;
NameList[24].py=“youyao“;
NameList[25].py=“linshu“;
NameList[26].py=“majinlian“;
NameList[27].py=“milaoshu“;
NameList[28].py=“dengchao“;
NameList[29].py=“sunshan“;
for(i=0;i { s0=0;
f=NameList[i].py;
for(r=0;*(f+r)!=‘\0‘;r++)
/* 将字符串的各个字符所对应的ASCII码相加,所得的整数做为哈希表的关键字*/
s0=*(f+r)+s0;
NameList[i].k=s0;
}
}
void CreateHashList() //建立哈希表
{ int i;
for(i=0; i { HashList1[i].py=““;
HashList1[i].k=0;
HashList1[i].si=0;
HashList2[i].py=““;
HashList2[i].k=0;
HashList2[i].si=0;
HashList3[i].py=““;
HashList3[i].k=0;
HashList3[i].si=0;
HashList3[i].next=NULL;
}
for(i=0;i { int sum=0;
int adr=(NameList[i].k)%M; //哈希函数
int d=adr;
//表1--线形探测再散列法处理冲突
if(HashList1[adr].si==0) //如果不冲突
{ HashList1[adr].k=NameList[i].k;
HashList1[adr].py=NameList[i].py;
HashList1[adr].si=1;
}
else //冲突
{ do
{ d=(d+1)%HASH_LENGTH;
sum=sum+1; //查找次数加1
}while (HashList1[d].k!=0);
HashList1[d].k=NameList[i].k;
HashList1[d].py=NameList[i].py;
HashList1[d].si=sum+1;
}
d=adr;
sum=0;
//表2--二次探测再散列法处理冲突
if(HashList2[adr].si==0) //如果不冲突
{ HashList2[adr].k=Na
- 上一篇:C语言双向链表基本操作
- 下一篇:MFC写的画图板类似Windows自带的画图
相关资源
- 数据结构 图的遍历源代码
- 数据结构实验源代码集
- 实验报告:数据结构长整数四则运算
- 数据结构教程李春葆第五版书中例题
- 吕鑫vc6c++数据结构视频源码
- 数据结构教程李春葆第五版课后答案
- 李春葆课后习题答案(数据结构教材
- 数据结构1800题 题+答案(全)
- 数据结构(C语言版)ppt课件,清华,
- c++常用游戏算法及数据结构设计
- 数据结构超全面复习导图
- 《Data Structures and Algorithm Analysis in C
- 数据结构C语言版教学笔记严蔚敏
- 数据结构C语言版期末考试试题(有答
- 多功能计算器实现C++代码以及代码详
- C语言数据结构银行客户排队
- C语言实现栈操作
- 简易学生管理系统源码 数据结构 大作
- 数据结构与C语言综合习题集
- 数据结构实验——赫夫曼树相关
- C语言进阶源码---基于graphics实现图书
- 数据结构——C++语言描述 陈慧南
- 广东工业大学数据结构课程设计航空
- 数据结构课程设计扑克牌排序
- 数据结构各种算法实现(C++模板),
- (严版C语言版数据结构源码.rar
- 数据结构算法与应用--C++语言描述 书
- 数据结构大作业 停车场管理 C语言
- 北航991数据结构与C语言程序设计历年
- 用c写的航空订票系统 航班信息改变
评论
共有 条评论