数据结构课程设计报告撰写模板(参考) 下载本文

{ HashList[i].py=\

HashList[i].k=0; HashList[i].si=0;

}

for(i=0;i

{ int sum=0;

int adr=(NameList[i].k)%M; //哈希函数 int d=adr;

if(HashList[adr].si==0) //如果不冲突

{ HashList[adr].k=NameList[i].k;

HashList[adr].py=NameList[i].py; HashList[adr].si=1;

}

else //冲突

{ do

{ d=(d+NameList[i].k+1)%M; //伪随机探测再散列法处

理冲突

sum=sum+1; //查找次数加1

}while (HashList[d].k!=0);

HashList[d].k=NameList[i].k; HashList[d].py=NameList[i].py; HashList[d].si=sum+1; }

3.3 查找哈希表

在哈希表中进行查找,输出查找的结果和关键字,并计算和输出查找成功的平均查找长度

void FindList() {

char name[20]={0}; } }

int s0=0,r,sum=1,adr,d;

printf(\请输入姓名的拼音:\

scanf(\

for(r=0;r<20;r++) //求出姓名的拼音所对应的整数(关键字) s0+=name[r];

adr=s0%M; //使用哈希函数 d=adr;

if(HashList[adr].k==s0) //分3种情况进行判断 printf(\姓名:%s 关键字:%d 查找长度为: 1\

else if (HashList[adr].k==0) printf(\无此记录!\ else

{ int g=0;

do

{ d=(d+s0+1)%M; //伪随机探测再散列法处理冲突

sum=sum+1; if(HashList[d].k==0)

{ printf(\无此记录! \

g=1;

}

if(HashList[d].k==s0)

{ printf(\姓名:%s 关键字:%d 查找长度

为:%d\ g=1; }

3.4 显示哈希表 显示哈希表的的格式:

\\n地址\\t关键字\\t\\t搜索长度\\tH(key)\\t 姓名\\n void Display() {

int i; }

}

}while(g==0);

float average=0;