用C语言散列表实现电话薄
- #用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语言散列表实现电话薄相关推荐
- 用c语言写的电话簿的程序,用C语言散列表实现电话薄
#用C语言散列表实现电话薄# 标题 #include#include#includetypedef struct node { char num[11],name[15],address[20],ci ...
- 力扣383.赎金信(java语言散列表法)
题目描述: 给你两个字符串:ransomNote 和 magazine ,判断 ransomNote 能不能由 magazine 里面的字符构成. 如果可以,返回 true :否则返回 false . ...
- c语言散列表的构造和查找,简单的哈希表实现 C语言
简单的哈希表实现 这是一个简单的哈希表的实现,用c语言做的. 原理 先说一下原理. 先是有一个bucket数组,也就是所谓的桶. 哈希表的特点就是数据与其在表中的位置存在相关性,也就是有关系的,通过数 ...
- 力扣242.有效的字母异位词(Java语言,排序法、散列表法)
题目描述: 给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词. 注意:若 s 和 t 中每个字符出现的次数都相同,则称 s 和 t 互为字母异位词. 解题思路: 思路1: ...
- 哈希表(散列表)—Hash表解决地址冲突 C语言实现
哈希表(Hash table,也叫散列表),是根据关键码值(Key value)而直接进行访问的数据结构.也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度.具体的介绍网上有很详 ...
- 哈希表(散列表)基础概念与经典题目(Leetcode题解-Python语言)之上——原理与设计
哈希表(Hash table,也叫散列表),是根据键(Key)而直接访问数据在内存中的储存位置(又叫做存储桶,Buckets)的数据结构.也就是说,它通过计算一个关于键值的函数(哈希函数,Hash f ...
- 【大话数据结构C语言】62 散列表(哈希表)查找
欢迎关注我的公众号是[CodeAllen],关注回复[1024]获取精品学习资源 程序员技术交流①群:736386324 程序员技术交流②群:371394777 什么是散列表? 在初中的数学课本中学 ...
- 散列表(哈希表)总结(C语言)
文章目录 散列表中的基本概念 解决哈希冲突的几种方案 分离链接法 开放地址法 线性探测法 平方探测法 双散列 再散列 散列表中的基本概念 散列表定义: 散列表(Hash table,也叫哈希表),是一 ...
- 009.查找手机电话簿【散列表】
1. 散列表 顺序存储的结构类型需要一个一个地按顺序访问元素,当总量很大且我们所要访问的元素比较靠后时,顺序存储的结构类型性能就比较低.而散列表是一种空间换时间的存储结构,也是提升效率的一种比较常用的 ...
最新文章
- Javaweb学习笔记——(五)——————DOMXML目录
- 大数据?人工智能?揭秘银行数据仓库发展趋势
- Stream从Python切换到Go的原因
- 修改mysql编码方式
- CSS 单词间距 word-spacing属性
- Java学习笔记:创建线程的两种方法
- python docx 替换文字_在.docx文件-Python中查找和替换文本
- 停止犯下这5个JavaScript风格错误
- 大数据时代的河南机遇
- 计算机二级考试办公室高级应用考点,全国计算机二级考试MSOFFICE高级应用考点解析Word1...
- Xamarin.Forms 仿照京东搜索记录控件
- Dism++ 一款传说中的系统工具,使用简介
- 在VMware上用深度技术安装windows xp
- 【你问我答】不包装简历是不是面试机会都没有?
- (2)防火墙的基本配置---1安全域和端口
- android 卡片投影渐变,受Duolingo启发的ViewPager卡片效果
- 修改Google Chrome主页
- Word中相邻的两页无法没有对齐的解决方法
- 生产系统执行下线操作--泪奔
- axure 彻底删除lib_【AutoCAD 卸载工具,完全彻底删除清理干净AutoCAD各种残留注册表和文件】...