哈希表实验报告完整版

合集下载

哈希实验报告

哈希实验报告

一、 问题描述1. 实验题目:利用哈希表统计两源程序的相似性2. 基本要求:1)内容: 对于两个 C 语言的源程序清单,用哈希表的方法分别统计两程序中使用C 语言关键字的情况,并最终按定量的计算结果,得出两份源程序的相似性。

2)要求与提示:C 语言关键字的哈希表可以自建,也可以采用下面的哈希函数作为参考: Hash(key)=(key 第一个字符序号*100+key 最后一个字符序号)%41表长m 取43。

此题的工作主要是扫描给定的源程序,累计在每个源程序中C 语言关键字出现的频度。

为保证查找效率,建议自建哈希表的平均查找长度不大于2。

扫描两个源程序所统计的所有关键字不同频度, 可以得到两个向量。

如下面简单的例子所示:根据程序1和程序2中关键字出现的频度,可提取到两个程序的特征向量X1和X2,其中 X1=(4 3 0 4 3 0 7 0 0 2)TX2=(4 2 0 5 4 0 5 2 0 1)T一般情况下,可以通过计算向量Xi 和Xj 的相似值来判断对应两个程序的相似性,相似值的判别函数计算公式为: ji Ti j i X X X X X S ⋅=)(,其中,i T i X X X ⋅=。

S(X i ,X j )的值介于[0,1]之间,也称广义余弦,即S(X i ,X j )=COSθ。

X i =X j 时,显见S(X i ,X j )=1,θ=0;X i X j 差别很大时,S(X i ,X j )接近0,θ接近π/2。

如X1=(1 0)T,X2=(0 1)T,则S(X i ,X j )=0,θ=π/2。

当S 值接近1 的时候,为避免误判相似性(可能是夹角很小,模值很大的向量),应当再次计算之间的“几何距离” D(X i ,X k )。

其计算公式为:)()(),(k i Tk i k i j i X X X X X X X X D --=-= 最后的相似性判别计算可分两步完成:第一步 用式(3-1)计算S ,把接近 1的保留,抛弃接近0的情况(把不相似的排除); 第二步 对保留下来的特征向量,再用式(3-2)计算D ,如D 值也比较小,说明两者对应的程序确实可能相似(慎重肯定相似的)。

数据结构-哈希表设计实验报告

数据结构-哈希表设计实验报告

//头文件main.c#include<stdio.h>#include<stdlib.h>struct keyNum* hash[100];struct keyNum* insertHash(struct keyNum*,int);//关键字插入链表int searchHash(struct keyNum*,int m);//查找链表中是否存在值为m的整数void print(struct keyNum*);//打印链表struct keyNum{int key;//关键字struct keyNum *next;};void main(){int i,k,m,n,num,flag,l,j;int a[] = {280,700,603,430,641,907,640};struct keyNum *head = NULL;num = sizeof(a)/sizeof(int);for(i=0;i<sizeof(a)/sizeof(int);i++){k = a[i];m=k%(num+1);//计算得到关键字的哈希值hash[m]=insertHash(hash[m],k);//将关键字k插入到哈希值为m的链表中}printf("采用链地址法得到的哈希表为:\n");for(i=0;i<num+1;i++){printf("第%d行:",i);print(hash[i]);printf("\n");}printf("请输入要查找的整数值:\n");scanf("%d",&n);for(i=0;i<num+1;i++){l=searchHash(hash[i],n);if(l==1){j=i;break;}}if(l==1)printf("整数值%d在哈希表中,位置为链表%d\n",n,j);}struct keyNum * insertHash(struct keyNum*head,int m){struct keyNum *p0,*p1,*p2,*temp;temp=(struct keyNum*)malloc(sizeof(struct keyNum));temp->key=m;p1=head;p0=temp;//要插入的节点(值为m);if(head==NULL)//1,原来的链表为空,插入到head后{head=p0;p0->next=NULL;}else//原来的链表不为空{while((p0->key>p1->key)&&(p1->next!=NULL))//移动到适当位置 {p2=p1;p1=p1->next;}if(p0->key<=p1->key){if(head==p1)head=p0;//2,插入到第一个节点之前else p2->next=p0;//3,插入到p2指向的节点之后p0->next=p1;}else//4,插入到结尾处{p1->next=p0;p0->next=NULL;}}return(head);}int searchHash(struct keyNum*head,int m)//查找链表head中是否存在m {int k=0;struct keyNum*p;p=head;if(head!=NULL)do{if(p->key==m) //存在m{k=1;break;}p=p->next;}while(p!=NULL);return(k);//存在m值则返回1,否则返回0;}void print(struct keyNum*head)//打印链表head {struct keyNum*p;p=head;if(head!=NULL){do{printf(" -> %d ",p->key);p=p->next;}while(p!=NULL);}elseprintf("null");}头文件HashTable.htypedef struct KeyNum{int key;struct KeyNum* next;}keyNum;//插入keyNum* insertHash(keyNum* head,int m){keyNum *p0,*p1,*p2,*temp;temp=(keyNum*)malloc(sizeof(keyNum));temp->key=m;p1=head;p0=temp;//要插入的节点(值为m);if(head==NULL)//1,原来的链表为空,插入到head后{head=p0;p0->next=NULL;}else//原来的链表不为空{while((p0->key>p1->key)&&(p1->next!=NULL))//移动到适当位置 {p2=p1;p1=p1->next;}if(p0->key<=p1->key){if(head==p1)head=p0;//2,插入到第一个节点之前else p2->next=p0;//3,插入到p2指向的节点之后p0->next=p1;}else//4,插入到结尾处{p1->next=p0;p0->next=NULL;}}return(head);}//查找int searchHash(keyNum*head,int m)//查找链表head中是否存在m{int k=0;keyNum*p;p=head;if(head!=NULL)do{if(p->key==m) //存在m{k=1;break;}p=p->next;}while(p!=NULL);return(k);//存在m值则返回1,否则返回0;}void print(keyNum* head)//打印链表head{keyNum*p;p = head;if(head!=NULL){do{printf(" -> %d ",p->key);p=p->next;}while(p!=NULL);}elseprintf("null");}测试程序 Main.c#include<stdio.h>#include<stdlib.h>#define mSize 100 //数组最大个数#include "HashTable.h"void main(){int i,k,m,n,num,l,j;int a[] = {180,750,600,430,541,900,640};keyNum* hash[mSize];keyNum* head = NULL;num = sizeof(a)/sizeof(int);for(i=0;i<num+1;i++)hash[i] = NULL;for(i = 0;i<num;i++){k = a[i];m=k%(num+1);//计算得到关键字的哈希值hash[m] = insertHash(hash[m],k);//将关键字k插入到哈希值为m 的链表中}printf("当前哈希表如下:\n");for(i=0;i<num+1;i++){printf("第%d行:",i);print(hash[i]);printf("\n");}printf("\n");printf("请输入要查找的元素:\n");scanf("%d",&n);for(i=0;i<num+1;i++){l=searchHash(hash[i],n);if(l==1){j=i;break;}}if(l==1)printf("\n整数值%d在哈希表中,位置为链表%d\n",n,j);else printf("\n整数值%d不在哈希表中!\n");}。

哈希实验报告

哈希实验报告

引言概述:本文旨在对哈希实验进行报告,重点介绍哈希实验的二次探测法、哈希函数、哈希表的查找、插入与删除操作,并分析实验结果。

通过本实验的开展,我们对哈希算法的原理、实现和性能有了更深入的理解,也增加了对数据结构的实践能力。

正文内容:一、二次探测法1.定义与原理2.步骤与流程3.优缺点分析4.实验过程与结果5.实验中的注意事项二、哈希函数1.哈希函数的设计原则2.常见的哈希函数算法3.哈希冲突与解决方法4.哈希函数的优化策略5.实验中的哈希函数选择与应用三、哈希表的查找操作1.哈希表的存储结构与基本操作2.直接定址法查找3.拉链法查找4.其他查找方法与比较5.实验结果与分析四、哈希表的插入与删除操作1.插入操作的实现思路2.插入操作的效率分析3.删除操作的实现思路4.删除操作的效率分析5.实验结果分析与对比五、实验结果与总结1.实验数据的统计与分析2.实验中的问题与解决方案3.实验结论与总结4.对哈希算法的进一步探讨与应用展望5.实验的意义与启示总结:通过对哈希实验的详细阐述,我们对二次探测法、哈希函数、哈希表的查找、插入与删除操作有了更深入的了解。

实验结果与分析表明,在哈希表的实现中,选择合适的哈希函数、解决哈希冲突以及优化插入与删除操作,对提高哈希表的性能至关重要。

哈希算法作为一种重要的数据结构应用,具有广泛的应用前景,在实际问题中具有重要的实践意义。

通过本次实验,我们不仅提升了对数据结构的理论理解,也增强了数据结构算法的实践能力,为今后的学习与研究打下了坚实的基础。

哈希查找_数据结构实验报告

哈希查找_数据结构实验报告

哈希查找_数据结构实验报告哈希查找_数据结构实验报告一:实验目的本实验旨在掌握哈希查找算法的原理和实现方法,深入了解数据结构中的哈希查找技术,并通过实际操作加深对哈希查找的理解。

二:实验原理哈希查找是一种基于哈希函数的查找技术,通过将关键字通过哈希函数映射到哈希表中的位置进行查找。

其主要原理步骤如下:1. 创建哈希表:根据需求确定哈希表的大小,在内存中分配对应大小的空间。

2. 哈希函数的选择:根据关键字的特性选择适合的哈希函数,将关键字映射到哈希表的存储位置。

3. 插入操作:将关键字通过哈希函数计算得到索引位置,如果该位置为空,则直接插入;如果该位置已存在关键字,则发生冲突,需要解决冲突。

4. 冲突解决:常见的冲突解决方法包括线性探测、二次探测和链地址法等。

5. 查找操作:通过哈希函数计算得到关键字的索引位置,进行查找操作。

如果该位置为空,则表示查找失败;如果该位置不为空,则继续比较关键字是否相等。

6. 删除操作:将关键字标记为删除状态,或将该位置置为空。

三:实验步骤本实验中,我们以哈希表实现哈希查找算法,具体步骤如下:1. 创建哈希表:- 确定哈希表的大小。

- 在内存中分配对应大小的空间。

- 将所有位置初始化为空。

2. 哈希函数的选择:- 根据关键字的特性选择适合的哈希函数。

- 哈希函数应尽量保证均匀分布,避免冲突。

3. 插入操作:- 输入待插入的关键字。

- 通过哈希函数计算得到关键字的索引位置。

- 如果该位置为空,则直接插入关键字;如果该位置不为空,则发生冲突,需要解决冲突。

4. 冲突解决:- 使用线性探测法解决冲突:- 从发生冲突的位置向后逐个查找下一个为空的位置,直到找到空位置或遍历完整个哈希表。

- 如果找到空位置,则将关键字插入该位置;如果遍历完整个哈希表仍没有空位置,则插入失败。

- 使用链地址法解决冲突:- 在每个哈希表位置上维护一个链表,将冲突的关键字插入到链表中。

5. 查找操作:- 输入待查找的关键字。

数据结构哈希表的实验报告

数据结构哈希表的实验报告

课程实习报告一、需求分析:1.本程序来自于图书馆靠书名来检索想要查找的书问题。

2.本程序要求:(1)根据输入建立图书名称表,采用创建散列表实现。

(2)建散列表后,如果想要查找的数据在散列表中输出yes否则输出no。

二、哈希表简介结构中存在关键字和K相等的记录,则必定存储在f(K)的位置上。

由此,不需比较便可直接取得所查记录。

这个对应关系f称为散列函数(Hash function),按这个思想建立的表为散列表。

* 对不同的关键字可能得到同一散列地址,即key1≠key2,而f(key1)=f(key2),这种现象称冲突。

具有相同函数值的关键字对该散列函数来说称做同义词。

* 综上所述,根据散列函数H(key)和处理冲突的方法将一组关键字映象到一个有限的连续的地址集(区间)上,并以关键字在地址集中的“象”,作为这条记录在表中的存储位置,这种表便称为散列表,这一映象过程称为散列造表或散列,所得的存储位置称散列地址。

这个现象也叫散列桶,在散列桶中,只能通过顺序的方式来查找,一般只需要查找三次就可以找到。

科学家计算过,当负载因子(load factor)不超过75%,查找效率最高。

* 若对于关键字集合中的任一个关键字,经散列函数映象到地址集合中任何一个地址的概率是相等的,则称此类散列函数为均匀散列函数(Uniform Hash function),这就是使关键字经过散列函数得到一个“随机的地址”,从而减少冲突。

程序设计流程程序思想(一)哈希函数unsigned int hash_BKDE(char *str)生成映射地址,成为散列表的编号。

(二)哈希表HashTable::HashTable()通过数组储存元素(三)插入函数void HashTable::insert(char*c)插入字符串,先计算要插入字符串生成的映射地址,然后在相应的地址插入,如果没有空位查找空位插入。

(四)查找函数bool HashTable::find(char*c)进行查找,先计算要生成字符串的地址,再到散列表中进行查找比较。

(完整word版)哈希表实现电话号码查询报告

(完整word版)哈希表实现电话号码查询报告

《数据结构》课程设计报告书题目:哈希表存储的电话号码查询专业:学号:学生姓名:指导教师:完成日期:目录1.实训题目………………………………………………1。

1实训要求…………………………………………. 1。

2需求分析…………………………………………。

2.系统设计………………………………………………2。

1总体设计………………………………………….. 2。

2详细设计…………………………………………。

2。

2。

1程序头文件…………………………………。

2。

2.2学生信息类及哈希表类……………………。

.2.2.3主函数流程…………………………………。

. 3。

系统实现………………………………………………。

3.1编码………………………………………………。

3。

2测试………………………………………………。

4。

归纳总结……………………………………………….4.1实训中遇到的问题以及解决办法………………。

.4.2感想和心得体会…………………………………。

5。

参考资料………………………………………………1.实训题目1.1实训要求⏹设每个记录有以下数据项:用户名、电话、地址;⏹从键盘输入各记录,以电话号码为关键字建立哈希表;⏹采用链地址法方法解决冲突;⏹能够查找并显示给定电话号码的相关记录。

1。

2需求分析本次实验要求采用哈希表完成信息的查找和储存,哈希表即为散列表。

本程序采用学生信息管理为例,设每个学生有电话号码,学生姓名,家庭住址三个信息。

通过建立哈希表储存信息,信息储存在节点中,并通过以电话号码为关键字完成查找,并显示出该学生的姓名,电话号码以及家庭住址.当哈希表中的数据与输入的数据发生冲突时,使用节点向后移一位的方法来解决冲突。

2.系统设计2.1总体设计本系统通过设计学生信息类和哈希表类来完成整个系统。

通过学生信息类实现从键盘输入学生的姓名,电话号码以及家庭地址.将学生的信息储存在建立的哈希节点内,通过多个链表保存,相同信息的保存在同一个节点内。

哈希表实验报告

哈希表实验报告

数据结构实验报告四——哈希表查找名字(字符串)实验题目:哈希表查找名字(字符串)实验目标:输入一组名字(至少50个),将其保存并利用哈希表查找。

输出哈希查找冲突次数,哈希表负载因子、查找命中率。

数据结构:哈希表和数组(二维)。

二维数组用于静态顺序存储名字(字符串),哈希表采用开放定址法,用于存储名字(字符串)对应的关键字并实现对名字(字符串)的查找。

需要的操作有:1.关键字求取(主函数中两次出现,未单独编为函数)关键字key=abs(字符串首位ASCII码值-第二位ASCII码值+第([]+1)位ASCII码值-最后一位ASCII码值-倒数第二位ASCII码值)*字符串长度(abs为求整数绝对值的函数)。

2.处理关键字的哈希函数(Hash)利用平方取中法求关键值key在哈希表中的位置。

公式add=(key*key)%1000/LENGTH(add 为key在哈希表中的地址)。

int Hash(int key){return((key*key)/1000%LENGTH);}3.处理哈希表中冲突的函数(Collision)利用线性探测再散列处理冲突,利用全局变量count统计冲突次数。

int Collision(int key,int Hashtable[]){int i;for(i=1;i<=LENGTH;i++){if(Hashtable[(Hash(key)+i)%LENGTH]==-1)return((Hash(key)+i)%LENGTH);count++;}}4.哈希表初始化(InitHash)void InitHash(int Hashtable[]){int i;for(i=0;i<LENGTH;i++)Hashtable[i]=-1;}5.向哈希表中插入关键字(InsertHash)void InsertHash(int key,int Hashtable[]){int add;if(Hashtable[add]==-1)Hashtable[add]=key;else{add=Collision(key,Hashtable);Hashtable[add]=key;}}6.查找关键字在哈希表中的存储位置(SearchHash)int SearchHash(int key,int Hashtable[]){int add;add=Hash(key);if(Hashtable[add]==key)return add;while(Hashtable[add]!=key&&Hashtable[add]!=-1)add=Collision(key,Hashtable);return add;}7.输出哈希表(PrintHash)(帮助调试用)void PrintHash(int Hashtable[]){int i;for(i=0;i<LENGTH;i++)if(Hashtable[i]!=-1)printf("%3d:%d\n",i+1,Hashtable[i]);}8.求字符串长度(strlen)(函数库<string.h>包含)以及求整数的绝对值(abs)(函数库<math.h>包含)算法设计:1建立长度为LENGTH的哈希表Hash(LENGTH具体值由宏定义决定)。

哈希表实验报告

哈希表实验报告

实习报告题目:设计一个哈希表,完成相应的建表和查表程序一、班级:1503013 姓名:李睿元学号:完成日期:需求分析1. 假设人名为中国人名的汉语拼音形式;2. 待填入哈希表的姓名共有30个,去平均查找长度的上限为2;3. 哈希函数用除留余数法构造,用伪随机探测再散列法处理冲突;4. 取读者周围较熟悉的30个人的姓名。

二、概要设计1. 抽象数据类型的定义:(1)人名数据表:typedef struct Node{char name[20];int key;}Node,NodeList[MAX];(2)哈希表:typedef struct hashtable{char* name;int key;int conflict_time;}HashTable[hashlen];(3)变量:#define P 61主要函数的实现:(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)伪随机探测序列的生成:void CreatConfilctArray(int n[])(6)哈希表的生成:void CreatHashTable(HashTable &ht,NodeList L,int* n)(7)哈希表的查询:void SearchHashTable(HashTable ht,int* n,char get_name[])三、详细设计#include <>#include <>#include <>#define P 61ame);L[i].key=GetKey(L[i].name); */fscanf(fp,"%s",L[i].name);L[i].key=GetKey(L[i].name);onflict_time=0;ht[n].name=NULL;ht[n].key=0;n++;}}void CreatConfilctArray(int n[]){ey);if(ht[t].conflict_time==0){ht[t].name=L[i].name;ht[t].conflict_time++;ht[t].key=L[i].key;printf("姓名:%s key值:%d 表内存储位置:%d\n",L[i].name,L[i].key,t);}else{int m=0;int d=(t+n[m])%hashlen;while(ht[d].conflict_time!=0){ht[d].conflict_time++;m++;d=(t+n[m])%hashlen;}ht[d].name=L[i].name;ht[d].conflict_time++;ht[d].key=L[i].key;printf("姓名:%s key值:%d 表内存储位置:%d\n",L[i].name,L[i].key,d);}i++;}}void SearchHashTable(HashTable ht,int* n,char get_name[]){onflict_time==0&&ht[h].key!=k){printf("表中未找到无此人!\n");break;}else if(ht[h].key==k){printf("已找到%s,表内存储位置:%d\n",get_name,h);break;}else{p++;h=n[p];}*/if(ht[h].name==NULL){printf("表中未找到无此人!\n");break;}else if(strcmp(ht[h].name,get_name)==0){printf("已找到%s,表内存储位置:%d,查找次数:%d\n",get_name,h,s_time);break;}else{p++;h=(t+n[p])%hashlen;s_time++;}}}int main(){哈希表可以在理想情况下不经过任何比较,一次存取就能得到所查记录;2. 除留余数法对于p的选择很重要,经过分析后的选择是p为小于等于m的最大素数,最终选择了61;3. 伪随机探测再散列相较于线性探测再散列或二次探测再散能有效的防止二次堆积。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验报告姓名:学号:1.实验题目针对某个集体中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。

基本要求:假设人名为中国人姓名的汉语拼音形式。

待填入哈希表的人名共有30个,取平均查找长度的上限为2。

哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。

2.需求分析本演示程序用VC编写,完成哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。

输出形式:地址,关键字,收索长度,H(key),拼音3.概要设计typedef struct NAMEtypedef struct htermvoid InitNameList()void CreateHashList()void FindList()void Display()int main()4.详细设计#include <>#include<>#include<>#define HASH_LEN 50#define M 47#define NAME_NO 8typedef struct NAME{char *py; y="houxinming";NameList[1].py="abc";NameList[2].py="defdgf";NameList[3].py="zhangrji";NameList[4].py="jiaxin";NameList[5].py="xiaokai";NameList[6].py="liupeng";NameList[7].py="shenyonghai";char *f;int r,s0;for (int i=0;i<NAME_NO;i++)y;for (r=0;*(f+r) != '\0';r++) =s0;}}void CreateHashList(){for ( int i=0; i<HASH_LEN;i++)y="";HashList[i].k=0;HashList[i].si=0;}for ( i=0; i<NAME_NO;){int sum=0;int adr=(NameList[i].k) % M; i==0) =NameList[i].k;HashList[adr].py=NameList[i].py;HashList[adr].si=1;}else )%10+1)%M; !=0);HashList[d].k=NameList[i].k;HashList[d].py=NameList[i].py;HashList[d].si=sum+1;}i++;}}void FindList(){printf("\n\n请输入姓名的拼音: "); ==s0) y,s0);else if (HashList[adr].k==0)printf("无该记录!");else{int g=0;do{d=(d+s0%10+1)%M; ==0){printf("无记录! ");g=1;}if (HashList[d].k==s0){printf("\n姓名:%s 关键字:%d 查找长度为:%d",HashList[d].py,s0,sum); g=1;}}while(g==0);}}void Display(){printf("\n\n地址\t关键字\t\t搜索长度\tH(key)\t\t拼音 \n"); ;printf("\t\t%d ",HashList[i].si);printf("\t\t%d ",(HashList[i].k)%M);printf("\t %s ",HashList[i].py);printf("\n");}for( i=15; i<30; i++){printf("%d ",i);printf("\t%d ",HashList[i].k);printf("\t\t%d ",HashList[i].si);printf("\t\t%d ",(HashList[i].k)%M);printf("\t %s ",HashList[i].py);printf("\n");}for( i=30; i<40; i++){printf("%d ",i);printf("\t%d ",HashList[i].k);printf("\t\t%d ",HashList[i].si);printf("\t\t%d ",(HashList[i].k)%M);printf("\t %s ",HashList[i].py);printf("\n");}for(i=40; i<50; i++){printf("%d ",i);printf("\t%d ",HashList[i].k);printf("\t\t%d ",HashList[i].si);printf("\t\t%d ",(HashList[i].k)%M);printf("\t %s ",HashList[i].py);printf("\n");}float average=0;for (i=0;i<HASH_LEN;i++)average+=HashList[i].si;average/=NAME_NO;printf("\n\n平均查找长度:ASL(%d)=%f \n\n",NAME_NO,average);}int main(){printf("\n------------------------哈希表的建立和查找----------------------");InitNameList();CreateHashList ();while(1){printf("\n\n");printf(" 1. 显示哈希表\n");printf(" 2. 查找\n");printf(" 3. 退出\n");err:char ch1;scanf("%c",&ch1);if (ch1=='1')Display();else if (ch1=='2')FindList();else if (ch1=='3')return 0;else{printf("\n请输入正确的选择!");goto err;}}}5.调试分析(略)6.使用说明程序名为hash ,运行环境为DOS。

程序执行后显示========================1.显示哈希表2.查找3.退出=======================SELECT:在select后输入数字选择执行不同的功能。

要求首先输入足够多的插入元素,才可以进行其他的操作。

每执行一次功能,就会显示执行的结果(正确或错误)以及执行后单链表的内容。

选择1:显示哈希表选择2:显示请输入姓名的拼音,要求输入要删除元素的位置,执行成功后返回元素的值。

选择3:退出程序7.测试结果------------------------哈希表的建立和查找----------------------1. 显示哈希表2. 查找3. 退出1地址关键字搜索长度 H(key) 拼音0 0 0 01 0 0 02 0 0 03 0 0 04 756 1 4 liupeng5 0 0 06 1181 1 6 shenyonghai7 0 0 08 0 0 09 0 0 010 0 0 011 0 0 012 294 1 12 abc13 1094 1 13 houxinming14 0 0 015 861 1 15 zhangrji16 0 0 017 0 0 018 0 0 019 0 0 020 0 0 021 0 0 022 0 0 023 0 0 024 0 0 025 0 0 026 0 0 027 0 0 028 0 0 029 0 0 030 0 0 031 0 0 032 643 1 32 jiaxin33 0 0 034 0 0 035 0 0 036 0 0 037 742 1 37 xiaokai38 0 0 039 0 0 040 0 0 041 0 0 042 0 0 043 0 0 044 608 1 44 defdgf45 0 0 046 0 0 047 0 0 048 0 0 049 0 0 0平均查找长度:ASL(8)=1. 显示哈希表2. 查找3. 退出请输入正确的选择!2请输入姓名的拼音: houxinming姓名:houxinming 关键字:1094 查找长度为: 11. 显示哈希表2. 查找3. 退出请输入正确的选择!。

相关文档
最新文档