iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > 其他教程 >C语言中如何利用哈希表实现通讯录
  • 672
分享到

C语言中如何利用哈希表实现通讯录

2023-06-16 23:06:33 672人浏览 泡泡鱼
摘要

这篇“C语言中如何利用哈希表实现通讯录”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中如何利用哈希表实现通讯录”文章吧

这篇“C语言中如何利用哈希表实现通讯录”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中如何利用哈希表实现通讯录”文章吧。

1.需求分析

本演示程序用C语言编写,完成哈希表的生成,电话号码的插入、以及查找等功能。
  (1)按提示输入相应的联系人的相关资料;
  (2)以相应的输出形式输出所存储的的联系人的资料;
  (3)程序可以达到建立、添加、查找、打印的功能;
  (4)程序可以判断用户输入的非法数据并引导正确的输入。

2.概要设计

存储电话号码的记录时,若在存储位置和其关键字之间建立某种确定的对应关系使得每个关键字和存储结构中一个唯一的存储位置相对应,那么在进行查找时,根据这个对应关系f就可以找到给定值K的像f(K)。若存储结构中存在关接找到所查记录。这个对应关系f称为哈希(Hash)函数或散列函数。按照以上思路建立的表称为哈希表或散列表。本案例设计主要考察散列表的建立、查找和修改。。

3.详细设计

#include<stdio.h> #include<string.h> #include<stdlib.h> 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%19);    //除余法求散列地址   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语言中如何利用哈希表实现通讯录”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网其他教程频道。

--结束END--

本文标题: C语言中如何利用哈希表实现通讯录

本文链接: https://www.lsjlt.com/news/285847.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • C语言中如何利用哈希表实现通讯录
    这篇“C语言中如何利用哈希表实现通讯录”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“C语言中如何利用哈希表实现通讯录”文章吧...
    99+
    2023-06-16
  • c语言哈希链表如何建立
    在C语言中,可以通过结构体和指针来实现哈希链表的建立。首先,定义一个哈希链表的节点结构体,包括键值对的数据和指向下一个节点的指针:`...
    99+
    2023-08-25
    c语言
  • C#中如何使用哈希表
    这篇文章将为大家详细讲解有关C#中如何使用哈希表,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。在.NET Framework中,Hashtable是System.Collections命名空...
    99+
    2023-06-18
  • 用C语言实现通讯录
    相信大家都见识过通讯录,通讯录里面一般有的内容为姓名,联系方式,年龄等信息。通讯录的主要功能有:增加、删除、查找、排序、修改、展示等操作。 那么具体应该用C语言怎么实现这个呢?接下来...
    99+
    2024-04-02
  • C语言链表实现简易通讯录
    本文实例为大家分享了C语言链表实现简易通讯录的具体代码,供大家参考,具体内容如下 链表实现通讯录功能: 1.添加–(输入 姓名,电话) 2.删除-- (输入人名,删除该人) 3.查询...
    99+
    2024-04-02
  • C++数据结构之哈希表如何实现
    本篇内容主要讲解“C++数据结构之哈希表如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++数据结构之哈希表如何实现”吧!哈希表概念二叉搜索树具有对数时间的表现,但这样的表现建立在一个假...
    99+
    2023-07-05
  • C语言如何实现通讯录小项目
    这篇文章主要介绍了C语言如何实现通讯录小项目,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。本文实例为大家分享了C语言实现通讯录小项目的具体代码,供大家参考,具体内容如下编写程...
    99+
    2023-06-15
  • C语言单链表如何实现通讯录管理系统
    这篇文章将为大家详细讲解有关C语言单链表如何实现通讯录管理系统,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。通讯录管理系统保存人的信息有: 名字   name电话 ...
    99+
    2023-06-15
  • C语言实现通讯录程序
    本文实例为大家分享了C语言实现通讯录程序的具体代码,供大家参考,具体内容如下 设计要求: 可以存放1000个人的信息,每个人的信息包括姓名、年龄、性别、电话、住址 通讯录功能包括: ...
    99+
    2024-04-02
  • C语言如何实现通讯录系统程序
    本文小编为大家详细介绍“C语言如何实现通讯录系统程序”,内容详细,步骤清晰,细节处理妥当,希望这篇“C语言如何实现通讯录系统程序”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。前言利用链表增、删、改、查功能以及文件...
    99+
    2023-07-02
  • 如何使用C语言代码实现通讯录功能
    今天小编给大家分享一下如何使用C语言代码实现通讯录功能的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。首先创建一个test.c...
    99+
    2023-07-02
  • C语言实现通讯录小项目
    本文实例为大家分享了C语言实现通讯录小项目的具体代码,供大家参考,具体内容如下 编写程序实现通讯录的基本功能,可以做到增,删,查,改,打印通讯录,等等功能 test.c #inc...
    99+
    2024-04-02
  • C语言实现通讯录小功能
    本文实例为大家分享了C语言实现通讯录功能的具体代码,供大家参考,具体内容如下 头文件contact.h #pragma once #define _CRT_SECURE_NO_...
    99+
    2024-04-02
  • C语言基于单链表实现通讯录功能
    本文实例为大家分享了C语言基于单链表实现通讯录功能的具体代码,供大家参考,具体内容如下 #include<stdio.h> #include<stdlib.h&...
    99+
    2024-04-02
  • C语言单链表实现通讯录管理系统
    本文实例为大家分享了C语言单链表实现通讯录管理系统的具体代码,供大家参考,具体内容如下 本人前几天刚刚自学了单链表,趁热打铁,赶紧写一个小小的项目练练手。 单链表的实现在本人之前的博...
    99+
    2024-04-02
  • 详解C语言之实现通讯录
    目录基本思路和代码实现其他探讨总结基本思路和代码实现 为了代码清晰易读,我们创建一个Main.c源文件用来实现代码的基本逻辑。创建一个Contact.h源文件用于封装实现功能的函数,...
    99+
    2024-04-02
  • C语言实现简易通讯录实例
    目录一、问题描述二、功能介绍二、实现流程1.创建通讯录2.创建源文件test.c3.创建源文件contact.c4.删除通讯录联系人信息 (DelContact函数实现)5...
    99+
    2024-04-02
  • C语言链表案例学习之通讯录的实现
    目录一、通讯录需要实现的功能二、项目目的三、项目开发一、通讯录需要实现的功能 1,通讯录可以存储编号,联系人的姓名,电话号码和家庭住址。 2,通讯录最基本的功能是添加联系人,用户可以...
    99+
    2022-11-13
    C语言 链表 实现通讯录 C语言 实现通讯录 C语 言链表 通讯录 C语言 通讯录
  • C语言链表实现通讯录系统课程设计
    本文实例为大家分享了C语言链表实现通讯录系统的具体代码,供大家参考,具体内容如下 流程图 概要设计 1、数据结构 选择单链表来完成所有操作,便于插入和删除,不利于排序。 2、程序模...
    99+
    2024-04-02
  • C语言实现通讯录系统程序
    本文实例为大家分享了C语言实现通讯录系统程序的具体代码,供大家参考,具体内容如下 前言 利用链表增、删、改、查功能以及文件来完成通讯录系统。通讯录中包含联系人的基本信息:姓名、联系电...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作