C语言中如何利用哈希表实现通讯录
发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇"C语言中如何利用哈希表实现通讯录"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"
千家信息网最后更新 2025年01月17日C语言中如何利用哈希表实现通讯录
这篇"C语言中如何利用哈希表实现通讯录"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"C语言中如何利用哈希表实现通讯录"文章吧。
1.需求分析
本演示程序用C语言编写,完成哈希表的生成,电话号码的插入、以及查找等功能。
(1)按提示输入相应的联系人的相关资料;
(2)以相应的输出形式输出所存储的的联系人的资料;
(3)程序可以达到建立、添加、查找、打印的功能;
(4)程序可以判断用户输入的非法数据并引导正确的输入。
2.概要设计
存储电话号码的记录时,若在存储位置和其关键字之间建立某种确定的对应关系使得每个关键字和存储结构中一个唯一的存储位置相对应,那么在进行查找时,根据这个对应关系f就可以找到给定值K的像f(K)。若存储结构中存在关接找到所查记录。这个对应关系f称为哈希(Hash)函数或散列函数。按照以上思路建立的表称为哈希表或散列表。本案例设计主要考察散列表的建立、查找和修改。。
3.详细设计
#include#include #include typedef struct node { char num[11],name[15],address[20],city[15],etp[20]; struct node *next; }NUM; struct NUM *num_list[19]; int hash(char num[]) { int i,k=0; for(i=0;num[i]!='\0';i++) { k=10*k+num[i]-48; //字符转化为数字 } k=(k); //除余法求散列地址 return k; }//c除留余数法处理电话号码 void create() { struct node *p1; int k1,m=0; while(m==0) { printf("请输入你想添加人的信息:num name address city etp,\n"); p1=(struct node *)malloc(sizeof(struct node)); scanf("%s",p1->num); scanf("%s",p1->name); scanf("%s",p1->address); scanf("%s",p1->city); scanf("%s",p1->etp); k1=hash(p1->num);//用num数组值作为参数传递给哈希函数得到k1 p1->next=num_list[k1];//將k1得到的值作为数组的储存地址赋值给头结点的下一个节点 num_list[k1]=p1;//再將p1的数据传递给数组,故p1可以释放作为下一个节点产生 printf("结束请按1,再次输入请按0\n"); scanf("%d",&m); } printf("通讯表已经创建\n"); } void dlter() { char num[11]; int k1; int find=0; struct node *f; printf("请查询要修改的联系人的电话:\n:"); scanf("%s",num); k1=hash(num); f=num_list[k1]; while(f!=NULL) { if(strcmp(f->num,num)==0) { printf("查找到了!请输入要修改的人的资料:\n"); scanf("%s%s%s",f->num,f->name,f->address,f->city,f->etp); find=1; } f=f->next; } if(find=0) printf("没有找到要删除的节点!"); } void list() { struct node *f;//打印节点指针 int i; printf("打印通讯录如下:\n"); for(i=0;i<19;i++) { f=num_list[i]; while(f!=NULL) { printf("--->num:%s\t name:%s\t address:%s\t city:%s\t etp:%s\t \n",f->num,f->name,f->address,f->city,f->etp); f=f->next; } } } void add() { char num[11],name[15],address[20],city[15],etp[20]; struct node *p1; int k1; printf("请输入新添加的人的信息:电话 姓名 地址 城市 邮箱\n"); p1=(struct node *)malloc(sizeof(struct node)); scanf("%s%s%s",num,name,address); strcpy(p1->num,num); strcpy(p1->name,name); strcpy(p1->address,address); strcpy(p1->city,city); strcpy(p1->etp,etp); k1=hash(p1->num); p1->next=num_list[k1]; num_list[k1]=p1; printf("ok\n"); } void search() { char num[11]; int k1; int find=0; struct node *f; printf("请输入查询人的电话号码:"); scanf("%s",num); k1=hash(num); f=num_list[k1]; while(f!=NULL) { if(strcmp(f->num,num)==0) { printf("所要查找的联系人信息 :num:%s name:%s address:%s city:%s etp:%s\n",f->num,f->name,f->address,f->city,f->etp); find=1; } f=f->next; } if(find=0) printf("此联系人没有找到!"); } void main() { int i; char x; for(i=0;i<19;i++) { num_list[i]=NULL; } while(1) { // system("cls"); printf("\n"); printf("★★★★★★★★★通讯录★★★★★★★★★\n"); printf("★◆----------------------------------◆★\n"); printf("★| 1.建立 |★\n"); printf("★| |★\n"); printf("★| 2.查找 |★\n"); printf("★| |★\n"); printf("★| 3.添加 |★\n"); printf("★| |★\n"); printf("★| 4.修改 |★\n"); printf("★| |★\n"); printf("★| 5.打印 |★\n"); printf("★| |★\n"); printf("★| 6.结束 |★\n"); printf("★◆----------------------------------◆★\n"); printf("★★★★★★★★★★★★★★★★★★★★★\n"); // x=getchar(); scanf("%s",&x); switch(x) { case '1': create();break; case '2': search();break; case '3': add();break; case '4': dlter();break; case '5': list();break; case '6': return; default:printf("请重新输入;\n"); } } }
以上就是关于"C语言中如何利用哈希表实现通讯录"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
输入
哈希
通讯
电话
存储
通讯录
内容
联系人
联系
语言
号码
电话号码
节点
信息
函数
地址
数组
程序
资料
设计
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
思科网络技术作业
网络售票软件开发要求
数据库将null改为0
升级ap数据库
软件开发行业纳税筹划分析
sql数据库操作数据
485通信软件开发
阜阳网络安全宣传
教育信息化与网络安全管理
做软件开发辛苦
当代网络安全法律存在的问题
郑州有招零基础软件开发的吗
工业控制网络安全问题的文章
GPS定位跟踪软件开发
开源 大数据网络安全监控
义乌云软件开发流程八个步骤
网络安全30字
上海基础数据库建设方案
python网络安全篇语句
信息网络安全有哪几个时代
洛阳计算机网络技术专业
天下3虎虎生威服务器
网络安全专业就业数据
数据库分配账号密码权限
数据库中as使用
青浦区方便软件开发报价信息中心
腾讯游戏的服务器失败
关于数据库的纯英文的书
黄陂区标准网络安全维护报价表
forest种树不同服务器