用C语言或PASCAL编写一用链接表(Linked List)解决冲突的哈希表插入函数。

admin2016-03-29  33

问题 用C语言或PASCAL编写一用链接表(Linked List)解决冲突的哈希表插入函数。

选项

答案本题仍用上面已定义的存储结构。首先计算关键字K的哈希地址,若该哈希地址的头指针为空,则直接插入;否则,先在该链表上查找,若查找失败,则插入链表;若查找成功,则不再插入。 typedef struct node{ keytype key; struct node*next; }HSNode*HSList; typedef struct node* HLK; void Insert(HLK HT[],keytype K){ //用链接表解决;中突的哈希表插入函数 i=H(K): //计算关键字K的哈希地址 if(HT[i]==null) //关键字K所在链表为空 {s=(HSNode’l:)malloc(sizeof(HSNode));s一>key=k;s->next=HT[i];HT[i]=s;} else{ //在链表中查询关键字K p=HT[i]; while(p&&p->key!=k)p=p->next; if(!p){ //链表中无关键字K,应该插入 s:(}tSNode *)malloc(sizeof(HSNode)): s一>next=HT[i];HT[i]=s; } //插入后成为哈希地址为i的链表中的第一个结点 } }

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

最新回复(0)