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

admin2014-12-25  40

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

选项

答案 void Delete(LinkList*HT,ElemType key) { /*在哈希表HT中删除关键字key*/ P=HT[H(key)]; if(!p) {print f(”表中无该元素\n”);exit(0);} if(p一>data==k) /*表中的一个元素*/ {HT[H(key)]=P->next, free(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的关键字,若查找成功,则删除该结点。算法描述如下。
转载请注明原文地址:https://jikaoti.com/ti/b7LaFFFM
0

最新回复(0)