数据结构C语言通讯录实现增删改查
时间: 2024-10-12 15:16:24 浏览: 41
在C语言中,我们可以使用数组、链表或者动态内存分配等数据结构来实现一个简单的通讯录功能。下面以链表为例来说明:
1. **基本数据结构**:
- 使用`struct`定义一个联系人节点,包含姓名(`char name[]`)、电话号码(`int phone_number`)等字段。
```c
struct Contact {
char name[50];
int phone_number;
struct Contact* next; // 指向下一个节点
};
```
2. **初始化**:
- 初始化一个空链表作为全局变量,用于存储所有联系人。
```c
struct Contact* head = NULL;
```
3. **添加联系人** (`addContact`):
- 创建一个新的节点,然后将其添加到链表头部。
```c
void addContact(char* name, int number) {
struct Contact* newNode = (struct Contact*)malloc(sizeof(struct Contact));
if (newNode != NULL) {
strcpy(newNode->name, name);
newNode->phone_number = number;
newNode->next = head;
head = newNode;
}
}
```
4. **删除联系人** (`deleteContact`):
- 需要遍历链表找到指定名称的节点并移除它。如果找不到,则报错。
```c
void deleteContact(char* name) {
struct Contact* temp = head, *prev = NULL;
while (temp != NULL && strcmp(temp->name, name) != 0) {
prev = temp;
temp = temp->next;
}
if (temp == NULL) {
printf("Contact not found.\n");
return;
}
if (prev == NULL) {
head = temp->next;
} else {
prev->next = temp->next;
}
free(temp);
}
```
5. **修改联系人信息** (`updateContact`):
- 类似于删除操作,需要先找到目标节点,然后更新其信息。
```c
void updateContact(char* oldName, char newName[], int newNumber) {
struct Contact* temp = head;
while (temp != NULL && strcmp(temp->name, oldName) != 0) {
temp = temp->next;
}
if (temp == NULL) {
printf("Contact not found.\n");
return;
}
strcpy(temp->name, newName);
temp->phone_number = newNumber;
}
```
6. **查询联系人** (`searchContact`):
- 遍历链表查找匹配的联系人。
```c
void searchContact(char* name) {
struct Contact* temp = head;
while (temp != NULL) {
if (strcmp(temp->name, name) == 0) {
printf("Name: %s, Phone Number: %d\n", temp->name, temp->phone_number);
break;
}
temp = temp->next;
}
if (temp == NULL) {
printf("Contact not found.\n");
}
}
```
阅读全文
相关推荐



















