![]() |
#2
cabage2020-06-18 19:52
|

linknode *hash_create()
{
int data,n = 0;
linknode a[6];
linknode *head,*temp,*end;
while(n <= 5){
a[n].next = NULL;
a[n].info = 0;
n++;
}
while(1){
label:scanf("%d",&data);
if(data == 0)
break;
if(a[data%2].info == 0){
a[data%2].elem = data;
a[data%2].info = 1;
goto label;
}
if(a[data%2].elem%2 == data%2){
head = &a[data%2];
end = a[data%2].next;
temp = (linknode *)calloc(sizeof(linknode),1);
temp->elem = data;
head->next = temp;
temp->next = end;
}
}
return a;
}
{
int data,n = 0;
linknode a[6];
linknode *head,*temp,*end;
while(n <= 5){
a[n].next = NULL;
a[n].info = 0;
n++;
}
while(1){
label:scanf("%d",&data);
if(data == 0)
break;
if(a[data%2].info == 0){
a[data%2].elem = data;
a[data%2].info = 1;
goto label;
}
if(a[data%2].elem%2 == data%2){
head = &a[data%2];
end = a[data%2].next;
temp = (linknode *)calloc(sizeof(linknode),1);
temp->elem = data;
head->next = temp;
temp->next = end;
}
}
return a;
}

void hash_search(linknode *op)
{
int n;
linknode *p;
printf("请输入要查询的数字:");
scanf("%d",&n);
p = &op[n%2];
while(p->info > 0){
if(p->elem == n){
printf("\n查找成功!!!!\n\n");
return;
}
p = p->next;
if(p == NULL){
printf("\n不存在!!!!\n\n");
return;
}
}
}
{
int n;
linknode *p;
printf("请输入要查询的数字:");
scanf("%d",&n);
p = &op[n%2];
while(p->info > 0){
if(p->elem == n){
printf("\n查找成功!!!!\n\n");
return;
}
p = p->next;
if(p == NULL){
printf("\n不存在!!!!\n\n");
return;
}
}
}
我用第一个函数创建了一个链表法的哈希表,但是将哈希表的首地址传入第二个函数后,为什么首地址里面的内容会丢失?如图
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录