C语言实现的单向链表电话本系统
需积分: 10 133 浏览量
更新于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;
}
```
这个函数将搜索单向链表中的节点,直到找到与输入的名字匹配的节点为止。
**单向链表的应用**
单向链表的应用非常广泛,在电话本、数据库、操作系统等领域都有着重要的应用。例如,在电话本中,我们可以使用单向链表来存储用户的信息,并提供快速的搜索和遍历功能。
**总结**
单向链表是一种非常重要的数据结构,它具有灵活和方便的特点。通过本文,我们了解了单向链表的定义、创建、遍历和搜索等操作,并了解了它的应用领域。
点击了解资源详情
2009-06-22 上传
2014-04-09 上传
2009-05-22 上传
2021-09-30 上传
qq_15454449
- 粉丝: 0
- 资源: 2