数据结构|课设-散列查找

  1. 插入信息
  2. 查找信息
  3. 输出

查找
🔺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;
		}
	}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值