C语言实现的单向链表电话本系统

需积分: 10 7 下载量 165 浏览量 更新于2024-09-09 收藏 4KB TXT 举报
C语言单向链表电话本 **单向链表存储结构** 单向链表是一种常用的链表结构,它的存储空间可以不连续,这使得它更加灵活和方便。与顺序表相比,单向链表可以更好地适应内存的动态分配和释放。 **单向链表的定义** 在C语言中,我们可以使用结构体来定义单向链表的节点结构。例如: ```c typedef struct node { Information info; struct node* link; } node; ``` 这里,`Information`是一个结构体,用于存储电话本中的信息,例如用户的id、名字、电话号码和关系等。`link`是一个指针,指向下一个节点。 **单向链表的创建** 创建单向链表的函数可以使用malloc函数来动态分配内存。例如: ```c linklist createNullList_link(void) { linklist llist = (linklist)malloc(sizeof(struct node)); if (llist != NULL) llist->link = NULL; else printf("内存分配失败\n"); return llist; } ``` 这个函数创建了一个空的单向链表,并将其返回。 **单向链表的遍历** 我们可以使用递归函数来遍历单向链表。例如: ```c void traverseLinkList(linklist llist) { if (llist == NULL) return; printf("%d %s %s %s\n", llist->info.id, llist->info.name, llist->info.number, llist->info.relationship); traverseLinkList(llist->link); } ``` 这个函数将遍历整个单向链表,并打印出每个节点的信息。 **单向链表的搜索** 我们可以使用函数来搜索单向链表中的节点。例如: ```c pnode locateLinkName(linklist llist) { pnode p; char name[13]; if (llist == NULL) { printf("链表为空\n"); return NULL; } printf("请输入要搜索的名字:\n"); scanf("%s", &name); p = llist->link; while ((p != NULL) && (strcmp(p->info.name, name))) { p = p->link; } return p; } ``` 这个函数将搜索单向链表中的节点,直到找到与输入的名字匹配的节点为止。 **单向链表的应用** 单向链表的应用非常广泛,在电话本、数据库、操作系统等领域都有着重要的应用。例如,在电话本中,我们可以使用单向链表来存储用户的信息,并提供快速的搜索和遍历功能。 **总结** 单向链表是一种非常重要的数据结构,它具有灵活和方便的特点。通过本文,我们了解了单向链表的定义、创建、遍历和搜索等操作,并了解了它的应用领域。