1.问题描述:
为某个单位建立一个员工通讯录管理系统,可以方便查询每一个员工的电话与地址。设计散列表存储,设计并实现通讯录查找系统。
2.基本要求
(1)每个记录有下列数据项:电话号码、用户名、地址;
(2)从键盘输入各记录,分别以电话号码为关键字建立散列表;
(3)采用二次探测再散列法解决冲突;
(4)查找并显示给定电话号码的记录;
(5)通讯录信息文件保存。
3 . 原理
1.哈希表是根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。
给定表M,存在函数f(key),对任意给定的关键字值key,代入函数后若能得到包含该关键字的记录在表中的地址,则称表M为哈希表,函数f(key)为哈希函数。
2. 二次探测再散列法:若发生冲突,则按照+1²,-1²,+2²,-2²…方式进行探测再散列的方法。
4 . 思路
此题基本上可以说就是哈希表的简单应用:
① 构建哈希表(需要构造一个哈希函数,确定一个合适的处理冲突的方法)
② 按照电话号码查找并输出
③ 将哈希表按序存进文件Output中
5 . 代码
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#define MAXSIZE 50
using namespace std;
int Czy=1;
typedef struct record
{
char Numb