用C语言编程,利用单链表的知识,编写一个通讯录储存姓名和电话号码,利用尾插法能够实现在尾部插入新记录
时间: 2024-10-27 22:04:58 浏览: 10
在C语言中,我们可以使用结构体(struct)定义一个联系人节点,包含姓名(char* name)和电话号码(char* phone)。然后通过单链表(如定义一个Node类型的指针变量作为头结点,指向第一个元素)来存储和管理这些联系人。尾插法(push_back in C++)在这里可以改写成动态添加新节点到链表的尾部。
下面是一个简单的示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// 定义联系人结构体
typedef struct Contact {
char* name;
char* phone;
struct Contact* next; // 指向下一个节点的指针
} Contact;
// 动态创建并初始化新的联系人节点
Contact* create_contact(char* name, char* phone) {
Contact* new_node = (Contact*)malloc(sizeof(Contact));
if (!new_node) {
printf("Memory allocation failed.\n");
return NULL;
}
new_node->name = strdup(name);
new_node->phone = strdup(phone);
new_node->next = NULL;
return new_node;
}
// 尾插法插入新的联系人
void insert_contact_tail(Contact** head, char* name, char* phone) {
Contact* new_node = create_contact(name, phone);
if (*head == NULL) {
*head = new_node;
} else {
Contact* current = *head;
while (current->next != NULL) {
current = current->next;
}
current->next = new_node;
}
}
// 打印整个联系人列表
void print_contacts(Contact* head) {
Contact* current = head;
while (current != NULL) {
printf("Name: %s, Phone: %s\n", current->name, current->phone);
current = current->next;
}
}
int main() {
Contact* contacts_list = NULL;
// 插入一些联系人
insert_contact_tail(&contacts_list, "Alice", "1234567890");
insert_contact_tail(&contacts_list, "Bob", "9876543210");
// 打印所有联系人
print_contacts(contacts_list);
return 0;
}
```
阅读全文