A-A+

写出从哈希法构造的散列表中删除关键字为k的一个记录的算法 设所有哈希函数为H 解决冲突的方法

2022-08-12 16:04:05 问答库 阅读 196 次

问题详情

写出从哈希法构造的散列表中删除关键字为k的一个记录的算法,设所有哈希函数为H,解决冲突的方法是链地址法。


请帮忙给出正确答案和分析,谢谢!

参考答案

正确答案:void Delete(LinkList*HTElemType key){ /*在哈希表HT中删除关键字key*/P=HT[H(key)];if(!p){print f(”表中无该元素\n”);exit(0);}if(p一>data==k) /*表中的一个元素*/{HT[H(key)]=P->nextfree(p);}else{ while(p&&p一>data!=k){q=p;P=P一>next;}if(p) /*查找成功*/( q一>next=P一>next;free(p);}else{printf(“表中无此元素\n”); exit(0);}}}
首先利用哈希函数关键字k的地址d,并在第d个单链表中查找值为k的关键字,若查找成功,则删除该结点。算法描述如下。

考点:算法,函数