- 插入信息
- 查找信息
- 输出
查找
🔺int Hash_Div(char Key[10],int residue)
·Key【10】:用来存放关键字
·residue:被除数
·取后6位
🔺int Insert_HashLinkList(HashLinkList HLL[],int m,ElemType x)
·d=Hash_Div(x.id,m);先利用哈希函数算出x.id应该储存到哪。
·令p指向的下一结点为空
·遍历,使q为原来的尾节点,令q的下一个结点为p,这样p就是新的尾节点。
int Hash_Div(char Key[10],int residue)
{
char s1[3];
int i,k;
for(i=6;i<=8;i++)
s1[i-6]=Key[i];
k=atoi(s1);
return k%residue;
}
int Insert_HashLinkList(HashLinkList HLL[],int m,ElemType x)
{
int d;
HashLinkNode *p,*q;
d=Hash_Div(x.level,m);
p=(HashLinkList)malloc(sizeof(HashLinkNode));
if(p==NULL)
return OverFlow;
strcpy(p->data.level,x.level);
strcpy(p->data.funnum,x.funnum);
strcpy(p->data.av,x.av);
strcpy(p->data.up,x.up);
strcpy(p->data.live,x.live);
p->next=NULL;
if(HLL[d]==NULL)
HLL[d]=p;
else
{
q=HLL[d];
while(q->next!=NULL)
q=q->next;
q->next=p;
}
return OK;
}
查找
🔺HashLinkList Location_HashLinkList(HashLinkList HLL[],int m,ElemType x)
·同样,先找出x.id所在的位置,然后开始寻找,运用字符串函数strcmp,如果x.id与p->data.id相同的话,查找就成功了
HashLinkList Location_HashLinkList(HashLinkList HLL[],int m,ElemType x)
{
int d;
HashLinkNode *p;
d=Hash_Div(x.level,m);
p=(HashLinkList)malloc(sizeof(HashLinkNode));
p=HLL[d];
while(p!=NULL)
{
if(strcmp(p->data.level,x.level)==0);
return p;
// p=p->next;
}
return NULL;
}
输出
🔺void Display_HashLinkList(HashLinkList HLL[],int m)
从头开始,如果HLL[i]==NULL,就输出NULL,如果不是,将p->data.id输出
注意%s
void Display_HashLinkList(HashLinkList HLL[],int m)
{
HashLinkNode *p;
int i;
for(i=0;i<m;i++)
{
p=HLL[i];
if(p==NULL)
printf("NULL\n",i);
while(p!=NULL)
{
printf("第%s是%s\t 粉丝数:%s\t av号:%s\t 直播间:%s\t \n",p->data.level,p->data.up,p->data.funnum,p->data.av,p->data.live);
p=p->next;
}
}
}