本文探讨了哈希表数据结构在通讯录应用程序中的具体应用和实现方式,详细分析了如何利用哈希表提高联系人查找、插入及删除等操作效率。
```cpp
#include
#include
#include
using namespace std;
#define NULL 0
unsigned int key; //用于输入/输出文件流类的变量
unsigned int key2; //key和key2分别作为电话号码和姓名的关键字
struct node {
char name[8], address[20];
char num[11];
struct node *next;
};
typedef struct node* pnode;
void hash(char num[]) {
int i = 3, key=0; //以电话号码为关键字建立哈希函数
while(num[i] != NULL) {
key += (int)num[i];
i++;
}
key %= 20;
}
void hash2(char name[]) {
int i = 1, key2 = 0; //姓名作为关键字的哈希函数
while(name[i] != NULL) {
key2 += (int)name[i];
i++;
}
key2 %= 20;
}
node* input() { //输入节点信息,建立结点,并将结点的next指针指向空
node *temp = new node;
temp->next=NULL;
cout<<输入姓名:<>temp->name;
cout<<输入地址:<>temp->address;
cout<<输入电话:<>temp->num;
return temp;
}
int apend() { //添加节点
node *newphone, *newname;
newphone = input();
hash(newphone->num);
newname = newphone;
hash2(newname->name);
if(phone[key] == NULL) phone[key]=newnode;
if(nam[key2] == NULL) nam[key2]=newnode;
newphone->next = phone[key]->next;
phone[key]->next=newphone;
newname->next = nam[key2]->next;
nam[key2]->next=newname;
return 0;
}
void create() { //新建节点
int i;
phone= new pnode[20];
for(i=0;i<20;i++) {
phone[i]=new node;
phone[i]->next=NULL;
}
}
void create2() { //新建节点
int i;
nam = new mingzi[20];
for(i=0;i<20;i++) {
nam[i] = new node;
nam[i]->next=NULL;
}
}
void list() { //显示列表
int i, j;
pnode *p;
for(j=0;j<20;j++)
if(phone[j]!=NULL)
cout<name<<\n;
for(i=0;i<20;i++) {
node *p = phone[i]->next;
while(p) {
cout << p->name << ;
p=p->next;
}
cout << \n;
}
}
void list2() { //显示列表
int i, j;
mingzi *q;
for(j=0;j<20;j++) {
if(nam[j]!=NULL)
cout<name<<\n;
}
for(i=0;i<20;i++) {
node *p = nam[i]->next;
while(p) {
cout << p->name << ;
p=p->next;
}
cout << \n;
}
}
int main() {
char num[11];
char name[8];
create();
create2();
int sel;
while(1) {
menu();
cin>>sel;
if(sel==3){
cout<<8姓名查询 <>b;
if(b==9){
cout<<请输入电话号码:<>num;
cout<<输出查找的信息:<>name;
cout<<输出查找的信息:<
优质
本项目采用C语言开发,利用哈希表技术高效管理联系人信息,提供增删改查等功能,适用于个人或小型团队使用。
本段落详细介绍了用C语言基于哈希表实现通讯录的方法,具有一定的参考价值,供对此感兴趣的读者参考。
优质
本课程设计旨在通过构建基于链表与哈希表相结合的数据结构模型来优化通讯录系统,提升其查找、插入及删除操作效率。
《数据结构与算法分析》课程设计教学任务书
通讯录系统设计:
设计要求:
1. 设计以姓名为关键字的散列表(哈希表),实现通讯录查找系统,完成相应的建表和查表程序。
2. 每个记录包含以下数据项:用户名、电话号码、地址;
3. 从键盘输入各记录,并分别以姓名作为关键字建立散列表。人名可以采用汉语拼音形式;人名字符串转化为数字的方式自行决定。
4. 使用除留余数法构造哈希函数,采用二次探测再散列法解决冲突。
5. 根据给定的姓名查找对应的电话号码和地址,并显示结果;若找不到则提示通讯录中无此人信息。
6. 通讯录的信息需保存到文件。
在上述任务的基础上,我的程序还增加了以下功能:
1. 使用链表的形式存储通讯录的数据;
2. 支持从文件读取先前已保存的通讯录数据;
3. 允许使用汉字作为人名输入;
文件说明:
- contacts.c:主程序文件
- hash.c:支持哈希表操作的相关函数
- hash.h:定义了用于实现哈希类型的接口文件
- list.c:提供列表相关操作的支持函数
- list.h:列出类型接口的声明文档
- menu.c: 菜单功能实现代码
- menu.h : 对菜单函数进行声明
- contacts.dat :数据存储文件(二进制格式)
- Contacts.cbp : CodeBlocks工程配置文件,若有CodeBlocks环境可直接打开使用
优质
本报告详细探讨了哈希表的设计原理及其在实际编程中的应用。通过理论分析和具体的编码实践相结合的方式,深入研究了不同冲突解决策略的效果,并提供了多种语言下的具体实现案例。适合对数据结构感兴趣的读者学习参考。
希望下载这份资料的人能够从中受益,里面包含了实验报告和代码。如果有需要的话,请放心下载吧。
优质
本实验报告详细探讨了通讯录在数据结构中的实现方法,包括但不限于链表、哈希表等技术的应用,旨在优化通讯录的数据存储与检索效率。
1. 建立通讯录信息:包含编号、姓名、性别、联系电话和地址。
2. 提供添加、删除、修改和查询信息的功能;
3. 在删除时能够提供不同方式的查询功能,例如按姓名或编号进行查询。