C语言单链表实现通讯录管理系统
本文介绍如何使用C语言的单链表数据结构来实现通讯录管理系统。
数据结构设计
首先,我们需要设计出通讯录中需要保存的数据类型及其结构。在本教程中,我们仅考虑每个联系人需要保存姓名和电话。
struct Contact {
char name[20];
char phone[20];
struct Contact* next;
};
以上代码定义了一个 Contact
结构体,它包含了保存姓名和电话信息的两个字符数组,以及一个指向下一个联系人的指针。
功能实现
添加联系人
当用户需要添加一个新的联系人时,我们需要通过单链表数据结构将新的联系人添加到通讯录中。具体实现如下:
void add_contact(struct Contact** head, char name[], char phone[]) {
struct Contact* new_contact = (struct Contact*)malloc(sizeof(struct Contact));
strcpy(new_contact->name, name);
strcpy(new_contact->phone, phone);
new_contact->next = NULL;
if (*head == NULL) {
*head = new_contact;
}
else {
struct Contact* curr = *head;
while (curr->next != NULL) {
curr = curr->next;
}
curr->next = new_contact;
}
}
以上代码实现了添加联系人的功能,其中:
head
是指向单链表头节点的指针;name
和phone
分别是新的联系人的姓名和电话号码。
删除联系人
当用户需要删除一个已有的联系人时,我们需要通过单链表数据结构找到该联系人并将其从通讯录中删除。具体实现如下:
void delete_contact(struct Contact** head, char name[]) {
if (*head == NULL) {
printf("Contact list is empty.\n");
return;
}
struct Contact* curr = *head;
if (strcmp(curr->name, name) == 0) {
*head = curr->next;
free(curr);
}
else {
struct Contact* prev = curr;
curr = curr->next;
while (curr != NULL && strcmp(curr->name, name) != 0) {
prev = curr;
curr = curr->next;
}
if (curr == NULL) {
printf("Contact not found.\n");
}
else {
prev->next = curr->next;
free(curr);
}
}
}
以上代码实现了删除联系人的功能,其中:
head
是指向单链表头节点的指针;name
是待删除联系人的姓名。
修改联系人
当用户需要修改一个已有的联系人的电话号码时,我们需要通过单链表数据结构找到该联系人并修改其电话号码。具体实现如下:
void modify_contact(struct Contact** head, char name[], char phone[]) {
struct Contact* curr = *head;
while (curr != NULL && strcmp(curr->name, name) != 0) {
curr = curr->next;
}
if (curr == NULL) {
printf("Contact not found.\n");
}
else {
strcpy(curr->phone, phone);
}
}
以上代码实现了修改联系人的功能,其中:
head
是指向单链表头节点的指针;name
是待修改联系人的姓名;phone
是待修改后的电话号码。
示例
示例1 添加联系人
int main() {
struct Contact* head = NULL;
add_contact(&head, "Bob", "123456");
add_contact(&head, "Alice", "654321");
return 0;
}
以上代码示例创建了一个新的通讯录,并向其中添加了两个联系人。
示例2 删除联系人
int main() {
struct Contact* head = NULL;
add_contact(&head, "Bob", "123456");
add_contact(&head, "Alice", "654321");
delete_contact(&head, "Alice");
return 0;
}
以上代码示例创建了一个新的通讯录,并向其中添加了两个联系人,然后删除了其中一个联系人。
总结
本教程介绍了如何使用C语言的单链表数据结构来实现通讯录管理系统。我们实现了向通讯录中添加联系人、删除联系人和修改联系人信息的功能,并为每个联系人定义了一个自定义的数据类型。这些功能的实现过程中用到了指针、动态内存分配和字符串处理等基本知识。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:C语言单链表实现通讯录管理系统 - Python技术站