利用线性表实现通讯录管理
时间: 2023-05-25 09:01:37 浏览: 177
A:通讯录管理可以通过线性表来实现,其中一个常用的线性表是数组。具体实现方法如下:
1.定义一个结构体,包含通讯录中一个人的信息,比如姓名、电话号码等。
2.定义一个数组来存储这些结构体,数组大小可以根据需要进行动态调整。
3.提供通讯录管理功能,包括添加联系人、删除联系人、修改联系人信息、查找联系人、显示所有联系人等操作。
4.添加联系人时,先判断数组是否已满,如果已满则扩容;然后根据用户输入的信息创建一个新的结构体,并添加到数组末尾。
5.删除联系人时,先查找指定姓名的联系人在数组中的位置,然后将其后的联系人依次向前移动,最后将数组大小减1。
6.修改联系人信息时,也先查找指定姓名的联系人在数组中的位置,然后根据用户输入的信息修改对应结构体的内容。
7.查找联系人可以根据姓名、电话号码等关键字进行查找,查找时遍历数组中所有结构体,逐一比对关键字即可。
8.显示所有联系人,只需要遍历数组中所有结构体,逐一输出即可。
这是一种简单的基于数组的通讯录管理实现方法,可以根据需要进行修改和优化。
相关问题
帮我写一个利用线性表实现通讯录管理
A:好的,请问您需要哪些功能实现在通讯录中?
实现在线性表中的通讯录管理,我们可以考虑以下一些基本功能:
1. 添加联系人:将联系人信息添加到线性表末尾。
2. 删除联系人:根据联系人名字或者电话号码等信息,在线性表中定位到联系人位置并删除。
3. 修改联系人:根据联系人名字或者电话号码等信息,在线性表中定位到联系人位置并进行修改。
4. 查询联系人:根据联系人名字或者电话号码等信息,在线性表中定位到联系人位置并返回联系人信息。
5. 显示所有联系人:遍历线性表并将所有联系人信息按照一定格式输出。
下面是一个示例代码,可以实现上述基本功能:
```python
class Contacts:
def __init__(self):
self.contacts_list = []
# 添加联系人
def add_contact(self, name, phone):
contact = {
"name": name,
"phone": phone
}
self.contacts_list.append(contact)
# 删除联系人
def delete_contact(self, name=None, phone=None):
for contact in self.contacts_list:
if contact["name"] == name or contact["phone"] == phone:
self.contacts_list.remove(contact)
# 修改联系人
def update_contact(self, name=None, phone=None, new_name=None, new_phone=None):
for contact in self.contacts_list:
if contact["name"] == name or contact["phone"] == phone:
contact["name"] = new_name
contact["phone"] = new_phone
# 查询联系人
def search_contact(self, name=None, phone=None):
for contact in self.contacts_list:
if contact["name"] == name or contact["phone"] == phone:
return contact
return None
# 显示所有联系人
def display_all_contacts(self):
for contact in self.contacts_list:
print("Name: {} Phone: {}".format(contact["name"], contact["phone"]))
```
使用示例:
```python
# 初始化通讯录
contacts = Contacts()
# 添加联系人
contacts.add_contact("张三", "123456789")
contacts.add_contact("李四", "987654321")
# 显示所有联系人
contacts.display_all_contacts()
# 查询联系人
contact = contacts.search_contact(name="张三")
print(contact)
# 修改联系人
contacts.update_contact(name="张三", new_name="王五", new_phone="11111111")
# 查询修改后的联系人信息
contact = contacts.search_contact(name="王五")
print(contact)
# 删除联系人
contacts.delete_contact(name="李四")
# 显示所有联系人
contacts.display_all_contacts()
```
以上就是一个基本的利用线性表实现通讯录管理的示例代码。您可以根据自己的需求进行修改和扩展,使其更加符合您的实际应用场景。
用C++语言帮我写一个利用线性表实现通讯录管理
程序。
好的,以下是利用线性表实现通讯录管理程序的C语言代码:
```
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define MAX_NAME_LEN 20
#define MAX_PHONE_LEN 11
typedef struct contact {
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
struct contact *next;
} Contact;
// 初始化通讯录为空
Contact *init_contact() {
Contact *head = (Contact*) malloc(sizeof(Contact));
head->next = NULL;
return head;
}
// 添加联系人到通讯录
void add_contact(Contact *head, char *name, char *phone) {
Contact *new_contact = (Contact*) malloc(sizeof(Contact));
strcpy(new_contact->name, name);
strcpy(new_contact->phone, phone);
new_contact->next = head->next;
head->next = new_contact;
printf("Contact added successfully.\n");
}
// 查找指定联系人
void search_contact(Contact *head, char *name) {
Contact *cur_contact = head->next;
int flag = 0;
while (cur_contact != NULL) {
if (strcmp(cur_contact->name, name) == 0) {
printf("Name: %s, Phone: %s\n", cur_contact->name, cur_contact->phone);
flag = 1;
break;
}
cur_contact = cur_contact->next;
}
if (!flag) {
printf("Contact not found.\n");
}
}
// 修改指定联系人的电话号码
void modify_contact(Contact *head, char *name, char *new_phone) {
Contact *cur_contact = head->next;
int flag = 0;
while (cur_contact != NULL) {
if (strcmp(cur_contact->name, name) == 0) {
strcpy(cur_contact->phone, new_phone);
printf("Phone number modified successfully.\n");
flag = 1;
break;
}
cur_contact = cur_contact->next;
}
if (!flag) {
printf("Contact not found.\n");
}
}
// 删除指定联系人
void delete_contact(Contact *head, char *name) {
Contact *cur_contact = head->next;
Contact *pre_contact = head;
int flag = 0;
while (cur_contact != NULL) {
if (strcmp(cur_contact->name, name) == 0) {
pre_contact->next = cur_contact->next;
free(cur_contact);
printf("Contact deleted successfully.\n");
flag = 1;
break;
}
pre_contact = cur_contact;
cur_contact = cur_contact->next;
}
if (!flag) {
printf("Contact not found.\n");
}
}
// 输出通讯录中的所有联系人
void print_contact(Contact *head) {
Contact *cur_contact = head->next;
if (cur_contact == NULL) {
printf("Contact list is empty.\n");
} else {
printf("Name\tPhone\n");
while (cur_contact != NULL) {
printf("%s\t%s\n", cur_contact->name, cur_contact->phone);
cur_contact = cur_contact->next;
}
}
}
int main() {
Contact *head = init_contact();
int choice;
char name[MAX_NAME_LEN];
char phone[MAX_PHONE_LEN];
char new_phone[MAX_PHONE_LEN];
while (1) {
printf("\n-- Contact Management System --\n");
printf("[1] Add contact\n");
printf("[2] Search contact\n");
printf("[3] Modify phone number\n");
printf("[4] Delete contact\n");
printf("[5] Print contact list\n");
printf("[0] Exit\n");
printf("Enter your choice: ");
scanf("%d", &choice);
switch (choice) {
case 1: // 添加联系人
printf("Enter name: ");
scanf("%s", name);
printf("Enter phone number: ");
scanf("%s", phone);
add_contact(head, name, phone);
break;
case 2: // 查找联系人
printf("Enter name: ");
scanf("%s", name);
search_contact(head, name);
break;
case 3: // 修改电话号码
printf("Enter name: ");
scanf("%s", name);
printf("Enter new phone number: ");
scanf("%s", new_phone);
modify_contact(head, name, new_phone);
break;
case 4: // 删除联系人
printf("Enter name: ");
scanf("%s", name);
delete_contact(head, name);
break;
case 5: // 输出所有联系人
print_contact(head);
break;
case 0: // 退出程序
printf("Exiting Contact Management System.\n");
exit(0);
default:
printf("Invalid choice, please try again.\n");
break;
}
}
return 0;
}
```
这是一个基于命令行界面的通讯录管理程序,支持添加、查找、修改、删除联系人,并且可以输出整个通讯录中的所有联系人。通过链表来实现联系人的添加、删除等操作,程序运行效率较高,并且可以处理较大量级的通讯录数据。
阅读全文