c语言链表储存通讯录
时间: 2024-07-08 16:01:21 浏览: 113
在C语言中,链表是一种数据结构,非常适合用来存储通讯录这样的动态集合,因为通讯录中的联系人数量通常是不确定的,并且可以根据需要随时添加或删除。下面是使用链表存储通讯录的一个简单示例:
1. 定义节点(Node)结构:
typedef struct Node {
char name[50]; // 姓名
char phone_number[15]; // 手机号码
struct Node* next; // 指向下一个节点的指针
} Contact;
2. 链表操作:
- 初始化链表:创建一个空头节点
head = NULL
- 添加联系人:新节点插入到链表尾部
- 删除联系人:根据姓名查找并移除相应节点
- 遍历链表:打印所有联系人的信息
示例代码片段:
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;
}
}
相关问题--:
- 如何在链表中查找特定联系人?
- 如果通讯录很大,如何优化链表操作以提高效率?
- 在实际应用中,如何保证链表节点的内存释放?
相关推荐

















