• #用C语言散列表实现电话薄# 标题

#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%s%s",num,name,address,city,etp);
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语言散列表实现电话薄相关推荐

  1. 用c语言写的电话簿的程序,用C语言散列表实现电话薄

    #用C语言散列表实现电话薄# 标题 #include#include#includetypedef struct node { char num[11],name[15],address[20],ci ...

  2. 力扣383.赎金信(java语言散列表法)

    题目描述: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成. 如果可以,返回 true :否则返回 false . ...

  3. c语言散列表的构造和查找,简单的哈希表实现 C语言

    简单的哈希表实现 这是一个简单的哈希表的实现,用c语言做的. 原理 先说一下原理. 先是有一个bucket数组,也就是所谓的桶. 哈希表的特点就是数据与其在表中的位置存在相关性,也就是有关系的,通过数 ...

  4. 力扣242.有效的字母异位词(Java语言,排序法、散列表法)

    题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词. 解题思路: 思路1: ...

  5. 哈希表(散列表)—Hash表解决地址冲突 C语言实现

    哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.具体的介绍网上有很详 ...

  6. 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之上——原理与设计

    哈希表(Hash table,也叫散列表),是根据键(Key)而直接访问数据在内存中的储存位置(又叫做存储桶,Buckets)的数据结构.也就是说,它通过计算一个关于键值的函数(哈希函数,Hash f ...

  7. 【大话数据结构C语言】62 散列表(哈希表)查找

    欢迎关注我的公众号是[CodeAllen],关注回复[1024]获取精品学习资源 程序员技术交流①群:736386324  程序员技术交流②群:371394777 什么是散列表? 在初中的数学课本中学 ...

  8. 散列表(哈希表)总结(C语言)

    文章目录 散列表中的基本概念 解决哈希冲突的几种方案 分离链接法 开放地址法 线性探测法 平方探测法 双散列 再散列 散列表中的基本概念 散列表定义: 散列表(Hash table,也叫哈希表),是一 ...

  9. 009.查找手机电话簿【散列表】

    1. 散列表 顺序存储的结构类型需要一个一个地按顺序访问元素,当总量很大且我们所要访问的元素比较靠后时,顺序存储的结构类型性能就比较低.而散列表是一种空间换时间的存储结构,也是提升效率的一种比较常用的 ...

最新文章

  1. Javaweb学习笔记——(五)——————DOMXML目录
  2. 大数据?人工智能?揭秘银行数据仓库发展趋势
  3. Stream从Python切换到Go的原因
  4. 修改mysql编码方式
  5. CSS 单词间距 word-spacing属性
  6. Java学习笔记:创建线程的两种方法
  7. python docx 替换文字_在.docx文件-Python中查找和替换文本
  8. 停止犯下这5个JavaScript风格错误
  9. 大数据时代的河南机遇
  10. 计算机二级考试办公室高级应用考点,全国计算机二级考试MSOFFICE高级应用考点解析Word1...
  11. Xamarin.Forms 仿照京东搜索记录控件
  12. Dism++ 一款传说中的系统工具,使用简介
  13. 在VMware上用深度技术安装windows xp
  14. 【你问我答】不包装简历是不是面试机会都没有?
  15. (2)防火墙的基本配置---1安全域和端口
  16. android 卡片投影渐变,受Duolingo启发的ViewPager卡片效果
  17. 修改Google Chrome主页
  18. Word中相邻的两页无法没有对齐的解决方法
  19. 生产系统执行下线操作--泪奔
  20. axure 彻底删除lib_【AutoCAD 卸载工具,完全彻底删除清理干净AutoCAD各种残留注册表和文件】...

热门文章

  1. 两种方法筛选出多因子量化选股模型
  2. 量化选股策略搭建(一)(股票数据获取)
  3. 最多显示三行,多余...展开,点击展开收起 getClientRects
  4. 汉语拼音方案里的O(哦)和 UO(窝)
  5. 能耗指标与数据中心规模-孙长青
  6. Controller层使用@value注解获取不到 yml文件中的properties属性值
  7. 软件流程图及功能节点图
  8. 联邦学习开源框架简介
  9. SpringBoot的个人博客管理系统(毕业论文范文)
  10. qq邮件 外发服务器设置,大商创使用教程-大商创邮件服务器设置