单链表实现通讯录代码
时间: 2024-09-07 22:05:48 浏览: 35
单链表实现通讯录的基本思想是将每个联系人信息封装成一个节点,然后将这些节点通过指针连接起来形成链表。在单链表中,每个节点包含两个部分:数据域和指针域。数据域用于存储联系人的信息,如姓名、电话号码等;指针域则存储指向下一个节点的指针。
下面是一个简单的单链表通讯录实现的示例代码,以C语言编写:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义联系人节点结构体
typedef struct ContactNode {
char name[50];
char phone[20];
struct ContactNode *next;
} ContactNode;
// 创建新节点
ContactNode* createNode(const char* name, const char* phone) {
ContactNode* newNode = (ContactNode*)malloc(sizeof(ContactNode));
if (newNode == NULL) {
printf("内存分配失败\n");
return NULL;
}
strcpy(newNode->name, name);
strcpy(newNode->phone, phone);
newNode->next = NULL;
return newNode;
}
// 在链表末尾添加节点
void addContact(ContactNode **head, const char* name, const char* phone) {
ContactNode* newNode = createNode(name, phone);
if (*head == NULL) {
*head = newNode;
} else {
ContactNode* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = newNode;
}
}
// 打印通讯录
void printContacts(ContactNode *head) {
ContactNode* current = head;
while (current != NULL) {
printf("姓名:%s, 电话:%s\n", current->name, current->phone);
current = current->next;
}
}
// 主函数
int main() {
ContactNode *head = NULL; // 初始化通讯录为空链表
// 添加联系人
addContact(&head, "张三", "123456789");
addContact(&head, "李四", "987654321");
addContact(&head, "王五", "1122334455");
// 打印通讯录
printContacts(head);
// 释放链表内存
ContactNode *temp;
while (head != NULL) {
temp = head;
head = head->next;
free(temp);
}
return 0;
}
```
这段代码展示了如何使用单链表来实现一个简单的通讯录功能,包括创建新节点、添加联系人、打印通讯录和释放内存等基本操作。需要注意的是,在实际使用中还需要考虑错误处理、查找和删除联系人等更多功能的实现。