参数传入函数后内容改变
程序代码:
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; }
程序代码:
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; } } }
我用第一个函数创建了一个链表法的哈希表,但是将哈希表的首地址传入第二个函数后,为什么首地址里面的内容会丢失?如图