主要为大家详细介绍了C语言基于哈希表实现通讯录,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
2021-07-06 09:10:09 63KB C语言 哈希表 通讯录
1
设计任务: 针对你所在班集体中的“人名”,设计一个哈希表,使得平均查找长度不超过R,完成相应的建表和查找过程。 设计要求: 1.每个人的信息至少包括姓名,电话,地址。至少包括对通讯录的创建,添加和按姓名查找等功能。 2.假设人名为汉语拼音全拼形式,待插入哈希表的长度为你所在班级的人数。哈希函数用除留余数法构造,采用链地址法或二次探测再散列法解决冲突。 3.完成菜单设计。操作有必要的提示。 实现提示: 假设人名最大长度不超过20,取码可以采用折叠处理,将每个字符对应的ASCII码求和。
2021-06-23 09:20:44 3KB 数据结构课程设计 哈希表 通讯录
1
用哈希表实现通讯录:#include #include #include using namespace std; #define NULL 0 unsigned int key; //用来输入/输出文件流类 unsigned int key2; //key和key2分别是用做了电话号码和姓名的关键字
2020-01-04 03:14:56 98KB 哈希表,通讯录
1
#include #include #include using namespace std; #define NULL 0 unsigned int key; //用来输入/输出文件流类 unsigned int key2; //key和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; 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; } //强制类型转换,将用户名的每一个字母的ASCLL码值相加并且除以20后的余数 node* input() //输入节点信息 ,建立结点,并将结点的next指针指空 { node *temp; temp = new node; temp->next=NULL; cout<<"输入姓名:"<>temp->name; cout<<"输入地址:"<>temp->address; cout<<"输入电话:"<>temp->num; return temp; } //对于指针类型返回的是地址 int apend() //添加节点 { node *newphone; node *newname; newphone=input(); newname=newphone; newphone->next=NULL; newname->next=NULL; hash(newphone->num); //利用哈希函数计算出对应关键字的存储地址 hash2(newname->name); newphone->next = phone[key]->next; //利用电话号码为关键字插入 phone[key]->next=newphone; //是采用链地址法,拉链法处理冲突的散列表结构 newname->next = nam[key2]->next; //利用用户名为关键字插入 nam[key2]->next=newname; return 0; } void create() //新建节点 { int i; phone=new pnode[20]; //动态创建对象数组,C++课本P188页 for(i=0;inext=NULL; } } void create2() //新建节点 { int i; nam=new mingzi[20]; for(i=0;inext=NULL; } } void list() //显示列表 { int i; node *p; for(i=0;inext; while(p) { cout
2020-01-03 11:21:17 98KB 哈希表 通讯录
1
(1)每个人的信息至少包括姓名,电话,地址。至少包括对通讯录的创建,添加和按姓名查找等功能。 (2)假设人名为汉语拼音全拼形式,待插入哈希表的长度为你所在班级的人数。哈希函数用除留余数法构造,采用链地址法或二次探测再散列法解决冲突。 (3)完成菜单设计。操作有必要的提示。
2019-12-21 20:50:19 11KB 哈希表通讯录
1
《数据结构与算法分析》课程设计教学任务书 通讯录系统设计: 设计要求 设计以姓名为关键字的散列表(哈希表),实现通讯录查找系统,完成相应的建表和查表程序。 (1)设每个记录有下列数据项:用户名、电话号码、地址; (2)从键盘输入各记录,分别以姓名为关键字建立散列表; (3)人名可以采用汉语拼音形式。人名字符串转化为数字的方式自行决定。 (4)哈希函数用除留余数法构造,采用二次探测再散列法解决冲突; (5)根据姓名查找,找到显示给定记录的电话号码和地址;找不到提示通讯录无此人。 (6)通讯录信息保存到文件。 ============================================================= 以上为任务书,我的程序在其基础上又增加了以下功能: 1、通讯录信息以链表的形式进行存储。 2、可从文件读取之前保存的通讯录信息。 3、人名支持汉字。 =================================== 文件说明: contacts.c ——主程序文件 hash.c -- 支持哈希表操作的函数 hash.h -- 哈希类型接口文件 list.c -- 支持列表操作的函数 list.h——列表类型接口文件 menu.c —— 实现菜单的函数 menu.h —— 菜单函数的声明 contacts.dat —— 数据存储文件(二进制形式) Contacts.cbp ——CodeBlocks工程文件,如有CodeBlocks,可直接打开工程。
2019-12-21 20:05:01 25KB 数据结构 链表 哈希表 通讯录系统
1