电话号码本的快速查找

本文介绍了使用链地址法的hash表实现电话号码本的管理,包含姓名和电话号码两个关键字的hash函数设计,以及记录的插入、查找、显示等功能。用户可以通过姓名或电话进行搜索操作。
摘要由CSDN通过智能技术生成

电话号码本的快速查找

• 创建基于链地址法的hash表,并实现电话薄的管理(记录不超过20个)。
• 电话薄中的记录包括姓名、电话号码和地址三个数据项,创建两个hash表,关键字分别为姓名和电话号码
• Hash函数为姓名前两个字母/电话号码最后三个数字求和之后对17取余
• 完成记录的插入、查找、显示功能

输入0:增加一条记录。
输入1:根据输入的姓名搜索记录并输出。
输入2:根据输入的电话搜索记录并输出。
输入3:根据姓名查找表输出全部记录。
输入4:根据电话查找表输出全部记录。
输入5:退出。

#include<iostream>
#include<string.h>
#define len 17
using namespace std;
typedef struct node //create node 
{
   
	char name[8];//define array for name 
	char address[20];//define array for address
	char tel[11];//define array for telephone num
	node* next;
}Person;
typedef struct Hash {
   
	Person* data;
	int count;
	int sizeindex;
}Hash;
bool makeH(Hash* table);
bool insetH(Hash* nametable, Hash* teltable, Person person);
bool searchnameH(Hash* nametable, char name[]);
bool searchtelH(Hash* teltable, char tel[]);
bool searchname(Person* head, char name[]);
bool searchtel(Person* head, char tel[]);
int getnamekey(char name[]) {
   
	return (name[0] + name[1]) % 17;
}
int gettelkey(char tel[]) {
   
	return((tel[10] - '0') * 10 + (tel[11] - '0')) % 17;
}
int main() {
   
	Hash nametable, teltable;
	makeH(&nametable);
	makeH(&teltable);
	Person *person, *head,*p;
	head = NULL;
	int i;
	char name[8], tel[11];
	do {
   
		cin >> i;
		switch (i) {
   
		case 0:person = new(Person);
			cin >> person->name >> person-<
  • 4
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 电话号码本是一个方便人们管理联系方式的工具,如何通过C语言快速查找电话号码的联系人信息呢? 首先,我们需要将电话号码本的联系人信息存储在某种数据结构,比如可以使用哈希、树或等。然后,我们可以通过输入联系人姓名或电话号码快速查找对应的联系人信息。 对于哈希实现,我们可以将联系人姓名或电话号码作为关键字进行哈希,并将哈希值作为数组下标存储在数组。当输入联系人姓名或电话号码时,我们可以通过哈希函数计算出对应的哈希值,并在数组查找对应的联系人信息。 对于树或实现,我们可以将联系人信息按照某种规则排序,然后建立相应的树或结构。当输入联系人姓名或电话号码时,我们可以通过树或的遍历算快速查找对应的联系人信息。 需要注意的是,实现电话号码本的快速查找需要考虑到效率和维护成本之间的平衡。不同的数据结构适用于不同的情况,需要根据具体需求进行选择。另外,还需要注意数据结构的设计和实现的可维护性,方便后续的更新和维护。 ### 回答2: 电话号码本是我们日常生活非常常见的工具,也是电话沟通的重要辅助工具。为了更方便快捷地查询电话号码,我们可以利用c语言编写一个简单的电话号码快速查找程序。 首先,要实现快速查找功能,我们需要将电话号码所有的号码存储到程序。这可以使用c语言的数组来实现。我们定义一个二维数组,其一维存储用户名,另一维存储电话号码。例如,数组名为“phonebook”,则第i个联系人的用户名和电话号码可以分别存储在phonebook[i][0]和phonebook[i][1]。 接下来,我们需要编写一个函数来实现快速查找功能。这个函数的输入参数为要查找的用户名,输出是其对应的电话号码。使用线性查找的方,从数组第一个元素开始,逐个遍历每个元素,直到找到和输入参数相同的用户名,然后返回其对应的电话号码即可。 为了进一步提高查找效率,我们可以将电话号码的联系人按照字母顺序进行排序,然后再使用二分查找来进行快速查找。这样可以减少查找的时间复杂度,提升程序运行效率。 在实现过程,为了用户可以方便地进行操作,我们可以加入一些菜单,如添加联系人、删除联系人等功能。 总之,c语言可以轻松实现电话号码本的快速查找功能,提高我们平时的沟通效率。 ### 回答3: 电话号码本是一个简单实用的工具,我们可以通过手机号码、姓名、地址等信息来查询联系人的电话号码及其他联系方式。在现代社会,电话号码本已被电子设备所代替,但依然有人喜欢使用传统的电话号码本。下面介绍如何使用C语言实现电话号码本的快速查找。 首先,我们需要使用结构体来存储联系人信息,如姓名、电话号码地址等。然后,使用来存储这些联系人信息。可以按照字母顺序排序,这样可以快速查找联系人。当然,也可以使用其他数据结构如二叉查找树等。 接着,我们需要实现各种功能,比如添加联系人、删除联系人、修改联系人信息、查找联系人等等。在C语言,可以使用指针来实现的添加、删除等操作,代码会非常简洁。 对于查找联系人功能,我们可以实现一个快速查找。在已经按照字母顺序排序的情况下,可以使用二分查找查找目标联系人。如果长度太长,则可以考虑使用哈希等数据结构来提高查找速度。 最后,我们需要设计一个用户界面,让用户可以方便地使用各种功能,并且对数据进行保存和读取。C语言可以使用控制台窗口来实现用户界面,也可以使用Qt等GUI库来实现更好的用户体验。 综上所述,使用C语言实现电话号码本的快速查找虽然有一定难度,但是只要使用合适的数据结构和算,就可以实现高效的查询和操作。同时,还需要注意保护用户隐私并及时更新数据,以保证电话号码本的实用性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值