散列表冲突方法 200分

来源:百度知道 编辑:UC知道 时间:2024/09/23 21:22:19
void hash(char num[11]) //号码哈希函数
{
int i = 3;
key=(int)num[2];

while(num[i]!=NULL)
{
key+=(int)num[i];
i++;
}
key=key%20;
}
void hash2(char name[8]) //姓名哈希函数
{
int i = 1;
key2=(int)name[0];

while(name[i]!=NULL)
{
key2+=(int)name[i];
i++;
}
key2=key2%20;
}

这是用线性探测在散列解决冲突
要求改变解决冲突方法,比如用二次探测在散列
伪随机探测再散列等

在线等

代码我已经看过了,你所说的并不是线性探测法,而应该是处理溢出的开散列方法——“链地址法”,而且体现这一方法的地方应该是int apend()函数中,

hash(newphone->num); //先计算号码的KEY
hash2(newname->name); //key2
newphone->next = phone[key]->next; //把该KEY的号码链接到原来的号码的后一节点上
phone[key]->next=newphone; //申请新节点,以备后续的插操作
newname->next = nam[key2]->next;
nam[key2]->next=newname;

这个程序非常不错