c语言链表储存通讯录
时间: 2024-07-08 19:01:21 浏览: 95
C语言实现链表通讯录
在C语言中,链表是一种数据结构,非常适合用来存储通讯录这样的动态集合,因为通讯录中的联系人数量通常是不确定的,并且可以根据需要随时添加或删除。下面是使用链表存储通讯录的一个简单示例:
**1. 定义节点(Node)结构:**
```c
typedef struct Node {
char name[50]; // 姓名
char phone_number[15]; // 手机号码
struct Node* next; // 指向下一个节点的指针
} Contact;
```
**2. 链表操作:**
- 初始化链表:创建一个空头节点`head = NULL`
- 添加联系人:新节点插入到链表尾部
- 删除联系人:根据姓名查找并移除相应节点
- 遍历链表:打印所有联系人的信息
**示例代码片段:**
```c
void addContact(Contact** head, char* name, char* phone) {
Contact* newNode = (Contact*)malloc(sizeof(Contact));
newNode->name = name;
newNode->phone_number = phone;
newNode->next = *head;
*head = newNode;
}
void deleteContact(Contact** head, char* name) {
Contact* temp = *head;
Contact* prev = NULL;
while (temp != NULL && strcmp(temp->name, name) != 0) {
prev = temp;
temp = temp->next;
}
if (temp != NULL) {
if (prev == NULL) {
*head = temp->next;
} else {
prev->next = temp->next;
}
free(temp);
}
}
void printContacts(Contact* head) {
Contact* current = head;
while (current != NULL) {
printf("姓名: %s, 手机号: %s\n", current->name, current->phone_number);
current = current->next;
}
}
```
**相关问题--:**
1. 如何在链表中查找特定联系人?
2. 如果通讯录很大,如何优化链表操作以提高效率?
3. 在实际应用中,如何保证链表节点的内存释放?
阅读全文