哈希表实验报告完整版

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

实验报告

姓名:学号:

1.实验题目

针对某个集体中人名设计一个哈希表,使得平均查找长度不超过R,并完成相应的建表和查表程序。

基本要求:假设人名为中国人姓名的汉语拼音形式。待填入哈希表的人名共有30个,取平均查找长度的上限为2。哈希函数用除留余数法构造,用线性探测再散列法或链地址法处理冲突。

2.需求分析

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

输出形式:地址,关键字,收索长度,H(key),拼音

3.概要设计

typedef struct NAME

typedef struct hterm

void InitNameList()

void CreateHashList()

void FindList()

void Display()

int main()

4.详细设计

#include <>

#include<>

#include<>

#define HASH_LEN 50

#define M 47

#define NAME_NO 8

typedef 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

for (r=0;*(f+r) != '\0';r++) =s0;

}

}

void CreateHashList()

{

for ( int i=0; i

HashList[i].k=0;

HashList[i].si=0;

}

for ( i=0; i

{

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");

相关文档
最新文档