问答题 使用散列函数: H(k)=3k mod 11 采用链地址法处理冲突时,设计一个算法删除一个指定的结点。
【正确答案】实现本题功能的函数代码如下: int delnode(int s) { hashnode *p,*q; int i; i=(3*s) % M; p=ht[i].next;q=p; while(p!=NULL && p->key!=s) { cout<<p->key<<endl; q=p; p=p->next; } if(p!=NULL && p==q) //p为第一个结点 { ht[i].next=p->next; free(p); return 1; } else if(p!=NULL) //p为其他结点 { q->next=p->next; free(p); return 1; } else { return 0; } }
【答案解析】