欢迎来到天天文库
浏览记录
ID:33118583
大小:94.37 KB
页数:20页
时间:2019-02-20
《《哈希表的设计》doc版》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、哈尔滨理工大学课 程 设 计(数据结构)题 目: 哈希表设计班 级:姓 名: 指导教师: 系主任:2013年03月08日第20页共20页目录一、问题描述......................................................3二、需求分析1、基本要求2、测试数据.......................................................3三、概要设计......................................................3四、详细设
2、计......................................................4五、测试分析.....................................................11六、课程设计总结.............................................13七、附录(源代码).........................................13第20页共20页一、问题描述针对自己班级体中的“人名”设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和
3、查表程序。二、需求分析基本要求:假设人名为中国姓名的汉语拼音模式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用链表法处理冲突。测试数据:输入30个人的姓名拼音,即30个字符串,然后用除留余数法构建哈希表并用链表法处理冲突,最后将结果输出,程序自动计算查找长度的总数和平均查找长度,然后用户可以根据需求进行查找操作。三、概要设计开始i=0,keyi++Nikry_codeem->next=NULL
4、key=em->key_code%pNht[key].key=NULLKEYNULLKEYNULLKEYNULLKEYNht[key].key==keyYht[key].key=keyYht[key].next=emp=ht[key].nextNp->next!=NULLp->next=emYp=p->next结束一、详细设计头文件#include#include第20页共20页#include#include#defineP30/*除数余留法中的除数*/#defineNULLK
5、EY0#defineMAX30/*人名个数*/#definehashlen30/*哈希表长度*/intsum=0,k=0;typedefstructNode/*哈希表结构体*/{charkey_code[10];/*哈希表地址*/structNode*next;}Node;typedefstructhashtable/*创建哈希表*/{intkey;structNode*next;}HashTable[MAX];intHash(intkey){intmode=key%P;/*除留余数法得到的余数*/returnmode;}voidHash_Init(Ha
6、shTableht)/*哈希表初始化*/{inti;for(i=0;ikey_code));Node*p;p=(Node*)malloc(sizeof(Node));if(ht[key].ke
7、y==NULLKEY){ht[key].key=key;ht[key].next=node;k++;}elseif(ht[key].key==key){p=ht[key].next;k++;while(p->next!=NULL){p=p->next;k++;}p->next=node;k++;}return1;}第20页共20页Node*Hash_Search(HashTableht,intkey)/*查找函数*/{intp0=Hash(key);if(ht[p0].key==NULLKEY){sum++;returnNULL;}elseif(ht[p
8、0].key==p0){Node*p=ht[p0].next;while(p!=
此文档下载收益归作者所有