ode2,*anode2; 电话号码地址名字指向下一个结点电话号码地址名字记录使用开放定址法时的冲突次数 typedef struct node3{ anode2 q;// 信息录入数组 int i;// 判断存储空间 int j;// 表长}newnode3,*anode3; 2、算法分析与实现开放定址法添加记录(以用户名为关键字) 使用开放定址法,以用户名为关键字,添加记录当输入的电话号码不为-1时, 输入姓名(英文),把姓名的第一个英文字母( char 型)强制转换为整型 e, 再使用开放定址法获取哈希地址,增量取用线性探测再散列法。 YNN YYY NNYNYY 指向( newnod 型数组)储存录入信息的数组判断存储空间是否已满记录表长 e=( (int)a[0] +k )% 表长该位置是否为空? 在该位置插入数据输入地址 K =k+1 输入地址在该位置插入数据输出内存已满结束 e=(int)a[0]% 表长该位置是否为空? 哈希表是否已满? K =1 输入姓名( char d= -1? 开始输入电话号码四、运行结果和调试分析测试数据: 姓名住址电话号码 Fu云南 19 Yuan 河北 14 Dong 山西 23 链地址法: 用户名为关键字建立散列表: ASL=1 以号码为关键字建立散列表: ASL=1 开放定址法: 用户名为关键字建立散列表: ASL=1 以号码为关键字建立散列表: ASL=1 运行结果图。 1.选用建表方法,初始化散列表。——————————链地址法 2.添加记录(以用户名为关键字) ——————————链地址法 3.查询记录(以用户名为关键字) ——————————链地址法 4.计算 ASL ——————————链地址法 5.添加记录(以号码为关键字) ——————————链地址法 6.查询记录(以号码为关键字) ——————————链地址法