哈希表实验报告15936.doc
《哈希表实验报告15936.doc》由会员分享,可在线阅读,更多相关《哈希表实验报告15936.doc(14页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、实习报告题目:设计一个哈希表,完成相应的建表和查表程序班级:1503013 姓名:李睿元 学号:15030130073 完成日期:2016。12.04一、 需求分析 1. 假设人名为中国人名的汉语拼音形式; 2. 待填入哈希表的姓名共有30个,去平均查找长度的上限为2; 3。 哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突; 4. 取读者周围较熟悉的30个人的姓名。二、 概要设计 1. 抽象数据类型的定义:(1)人名数据表: typedef struct Node char name20; int key; Node,NodeListMAX;(2)哈希表:typedef struct
2、hashtablechar name;int key;int conflict_time;HashTablehashlen;(3) 变量:define P 61/随机数值 #define MAX 30/人数 #define hashlen 61/哈希表长 2。 主要函数的实现:(1)哈希函数:int Hash(int key)(2) 关键字获得:int GetKey(char str) (3) 文件流中读取姓名:void GetName(NodeList L,int i,FILE* fp)(4) 哈希表的初始化:void InitialHashTable(HashTable &ht)(5) 伪
3、随机探测序列的生成:void CreatConfilctArray(int n)(6)哈希表的生成:void CreatHashTable(HashTable &ht,NodeList L,int n)(7) 哈希表的查询:void SearchHashTable(HashTable ht,int n,char get_name)三、 详细设计include stdio。hinclude #include string。hdefine P 61/随机数值 #define MAX 30/人数 define hashlen 61/哈希表长 typedef struct Nodechar name2
4、0;int key; Node,NodeListMAX;typedef struct hashtablechar* name;int key;int conflict_time;HashTablehashlen;int Hash(int key)return keyP; int GetKey(char str)int t=0;char s=str;while(s)t += s;s+; return t; void GetName(NodeList L,int i,FILE fp)/printf(”请以拼音形式输入第%d个姓名:,i);scanf(”%s”,Li。name);Li。key=Get
5、Key(Li.name); /fscanf(fp,”%s”,Li。name);Li。key=GetKey(Li。name);/printf(n”);void InitialHashTable(HashTable &ht)int n=0;while(nhashlen)htn.conflict_time=0;htn.name=NULL;htn。key=0;n+;void CreatConfilctArray(int n)/n=(int*)malloc(50*sizeof(int)); int i=0,j=0;while(i50)ni=rand()(hashlen+1);for(;ji;j+)if(
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 哈希表 实验 报告 15936
限制150内