数据结构-实验8查找的算法(3)

2020-06-19 09:10

int i,adr; adr=k % p;

if (ha[adr].key==NULLKEY || ha[adr].key==DELKEY) //x[j]可以直接放在

哈希表中 }

void CreateHT(HashTable ha,KeyType x[],int n,int m,int p) //创建哈希表

{ } else { } n++;

i=1; do {

adr=(adr+1) % p; i++;

//i记录x[j]发生冲突的次数

//发生冲突时采用线性探查法解决冲突

ha[adr].key=k; ha[adr].count=1;

} while (ha[adr].key!=NULLKEY && ha[adr].key!=DELKEY); ha[adr].key=k; ha[adr].count=i;

{

int i,n1=0; for (i=0;i

//哈希表置初值

{

ha[i].key=NULLKEY;

ha[i].count=0;

} }

int SearchHT(HashTable ha,int p,KeyType k) {

int i=0,adr; adr=k % p;

while (ha[adr].key!=NULLKEY && ha[adr].key!=k) { }

if (ha[adr].key==k)

return adr;

//查找失败

//查找成功

i++;

//采用线性探查法找下一个地址

//在哈希表中查找关键字k

for (i=0;i

InsertHT(ha,&n1,x[i],p);

adr=(adr+1) % p;

else

}

return -1;

int DeleteHT(HashTable ha,int p,int k,int *n) //删除哈希表中关键字k { }

void DispHT(HashTable ha,int n,int m) //输出哈希表 {

float avg=0; int i;

printf(\哈希表地址:\\t\for (i=0;i

printf(\int adr;

adr=SearchHT(ha,p,k); if (adr!=-1) { } else

//在哈希表中未找到该关键字

ha[adr].key=DELKEY; n--;

//哈希表长度减1

//在哈希表中找到该关键字

return 1;

return 0;

printf(\

printf(\哈希表关键字:\\t\

for (i=0;i

if (ha[i].key==NULLKEY || ha[i].key==DELKEY)

printf(\ \

//输出3个空格

else

printf(\

printf(\

printf(\搜索次数:\\t\for (i=0;i

if (ha[i].key==NULLKEY || ha[i].key==DELKEY)

printf(\ \

//输出3个空格

else

printf(\

printf(\

for (i=0;i

if (ha[i].key!=NULLKEY && ha[i].key!=DELKEY)

avg=avg+ha[i].count;

avg=avg/n;

printf(\平均搜索长度ASL(%d)=%g\\n\

void main() {

int x[]={16,74,60,43,54,90,46,31,29,88,77}; int n=11,m=13,p=13,i,k=29; HashTable ha; CreateHT(ha,x,n,m,p); printf(\printf(\查找关键字29:\\n\i=SearchHT(ha,p,k); if (i!=-1)

printf(\

else

printf(\未找到%d\\n\

k=77;

printf(\删除关键字%d\\n\DeleteHT(ha,p,k,&n); DispHT(ha,n,m); i=SearchHT(ha,p,k); if (i!=-1)

printf(\

else

printf(\未找到%d\\n\

}

printf(\插入关键字%d\\n\InsertHT(ha,&n,k,p); DispHT(ha,n,m); printf(\

四,实验小结

1、通过本次实验,加深了我对查找表的认识。

2、有序表的查找之折半查找:前提必须是有序表,性能只有在均匀分布的时候才是最优的。

3、二叉排序树查找:通过一系列的查找和插入过程形成的树。之所以叫做排序树,因为按照中序遍历可得一个有序的序列。


数据结构-实验8查找的算法(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:市安监局二011年上半年工作总结暨下半年工作安排

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: