哈希表c语言程序代码.docVIP

  1. 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
哈希表c语言程序代码

/* 实验项目名称:电话号码查询系统的实现 实验目的与要求: 1.基础知识:掌握数据结构中的查找、排序等算法相关知识; 掌握C或VC++语言中程序设计的方法。 2.参考教材相关算法,完成以下程序功能: (1)自选存储结构实现电话号码表的初始化; (2)编写一个电话号码查询系统,要求有电话号码记录的录入(插入)存储、查询、记录删除、排序、打印等模块; 实验性质: 综合性(4学时) 说明: 存储结构可采用哈希表的方式,完成用电话号码或姓名为关键字构建哈希表,并进行查询、添加、删除、打印记录等功能模 块(此方式为推荐方式),其次子函数的调用顺序由最终用户决定(可用多分支结构),程序中应有用户的操作选择界面. */ # include stdio.h # include stdlib.h # define SUCCESS 1 # define NULL_KEY -2 //-2为无标志记录 # define UNSUCCESS 0 # define DUPLICATE -1 int hashsize[]={11,19,29,37}; //哈希表容量递增表,一个合适的素数序列 int m=0; //哈希表表长,全局变量 typedef int KeyType; //设关键字为整形 typedef struct { char name; //姓名 KeyType num; //号码 }Node; typedef struct { Node *elem; //数据元素存储地址,动态分配数组 int count; //当前数据元素个数 int sizeindex; //hashsize[H.sizeindex]为当前容量 }HashTable; void ChuangJian(HashTable H) { //构建一个空哈希表 int i; H.count=0; //当前元素个数 H.sizeindex=0; //初试存储容量为hashsize[0] m=hashsize[0]; H.elem=(Node *)malloc(m*sizeof(Node)); if (!H.elem) exit (-2); //存储分配失败 for (i=0;im;i++) H.elem[i].num=NULL_KEY; //未填记录的标志 } void DaYin(int p,Node e) { //打印下标为p的记录 printf (哈希下标=%d 姓名:%c 号码:%d\n,p,e.name,e.num); } int HaXi(KeyType K) { //哈希函数(m为表长,全局变量) return K%m; } void ChongTu(int p,int d) { //线性探测再散列 p=(p+d)%m; } int EQ(int a,int v) { //判断a和v是否相等 if(a==v) return 1; //相等返回1 else return 0; //否则返回0 } int Find(HashTable H,KeyType K,int p) {//在开放定址哈希表H中查找关键字为K的元素,若查找成 //功,以p指示待查数据元素在表中下标,并返回SUCCESS;否则,返回UNSUCCESS int c=0; p=HaXi(K); //求得哈希地址 while(H.elem[p].num!=NULL_KEY!EQ(K,H.elem[p].num)) {//该位置中填有记录,并且与关键字不相等 c++; if(cm) ChongTu(p,c); //求得下一探查地址p else return UNSUCCESS; //查找不成功 } if (EQ(K,H.elem[p].num)) return SUCCESS; //查找成功,p返回待查数据元素下标 else r

文档评论(0)

asd522513656 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档