写出从哈希表中删除关键字为K的一个记录的算法。设哈希函数为H,解决冲突的方法为链地址法。

admin2019-01-16  26

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

选项

答案用链地址法解决冲突的哈希表是一个指针数组,数组分量均是指向单链表的指针,(第i个)单链表结点有两个域,一个是哈希地址为i的关键字,另一个是指向同义词结点的指针。删除算法与单链表上删除算法类似。 typedef struct node{ keytype key; struct node *next; }HSNode *HSList; typedef struct node *HLK; void Delete(HLK HT[],keytype K){ //用链地址法解决冲突,从哈希表中删去关键字为K的记录 int i=H(K); //用哈希函数确定关键字K的哈希地址 if(HT[i]==null){printf(“无被删除记录\n”);exit(0);} HLK p,q i p=H[i];q=p: //p指向当前记录(关键字),q是p的前驱 while(p&&p一>key!=k){q=p;p=p一>next;} if(p==null){printf(“无被删除记录”);exit(0);} if(q==H[i]){HT[i]=HT[i].next;flee(p);} //被删除关键字是链表中第一个结点 else{q一>next=p一>next;free(P);} }

解析
转载请注明原文地址:https://kaotiyun.com/show/aeRi777K
0

最新回复(0)