++) { key=(key+j)%20; if(phone[key]->name=="") break; } return(key); 每次冲突以后通过 j 的自增增加 1 ,一次寻找散列表中未被占用的位置,直到找到位置。 3、自定义函数,其中自定义的函数包括输入 apend 函数新建 create 函数,包括姓名输入和电话输入显示查询信息的 list 函数查找的 find 函数删除信息的 delete 函数保存信息的 save 函数最后定义主菜单函数 menu , 最后是主函数然后由主函数 void main( ) 根据用户输入的要求调用各个函数,主菜单函数每次均被调用。-7- 第三章算法实现 3.1 数据结构 struct node // 建节点{ char name[8],address[20]; char num[11]; node *next; }; typedef node *pnode; typedef node *mingzi; 定义姓名地址电话均使用字符型类型 3.2 程序模块头文件及散列定义关键字#include<stdio.h> #include<stdlib.h> #include<iostream> #include<string.h> #include<fstream> #define NULL 0 unsigned int key; unsigned int key1; unsigned int key2; 散列表的建立以及冲突处理函数 hash(char num[11]) //建表, 以人的电话号码为关键字, 建立相应的散列表若哈希地址发生冲突,进行冲突处理。{ inti= 3,j; key1=(int)num[2]; while(num[i]!=NULL) { key1+=(int)num[i]; i++; } key1=key1%20;