如何设计哈希表实现电话号码查询系统

来源:百度知道 编辑:UC知道 时间:2024/05/30 00:50:44
针对某个集体联系电话设计一个哈希表,使得平均查找长度

不超过R,完成相应的建表和查表程序。

(1) 假定每个记录有下列数据项:电话号码、用户名、地址


(2) 一是从数据文件old.txt(自己现行建好)中读入各项记录

,二是由系统随机产生各记录,并且把记录保存到new.txt文

件中以及显示到屏幕上,记录条数不要少于30,然后分别以

电话号码和用户名为关键字建立哈希表。
(3) 分别采用伪随机探测再散列法和再哈希法解决冲突。
(4) 查找并显示给定电话号码的记录;查找并显示给定用户

名的记录。
(5) 将没有查找的结果保存到结果文件Out.txt中,显示查找

结果前,要有提示语句。

【测试数据】
一是从文件old.txt中读取的数据自己在程序运行前建立,二

是由系统随机生成数据,在程序运行由随机数产生器生成,

并且将产生的记录保存到new.txt文件。

(关键)
分别以电话号码和用户名为关键字建立哈希表。
分别采用伪随机探测再散列法和再哈希法解决冲突。

//#include "iostream.h"
#include <iostream>
#include "string.h"
#include "fstream"
#define NULL 0
unsigned int key;
unsigned int key2;
int *p;
struct node //建节点
{
char name[8],address[20];
char num[11];
node * next;
};

typedef node* pnode;
typedef node* mingzi;
node **phone;
node **nam;
node *a;

using namespace std; //使用名称空间

void hash(char num[11]) //哈希函数
{
int i = 3;
key=(int)num[2];

while(num[i]!=NULL)
{
key+=(int)num[i];
i++;
}
key=key%20;
}

void hash2(char name[8]) //哈希函数
{
int i = 1;
key2=(int)name[0];
while(name[i]!=NULL)
{
key2+=(int)name[i];
i++;
}
key2=key2%20;
}

node* input() //输入节点
{
node *temp;
temp = new node;
temp->next=NULL