在一个寻宝游戏中,你从第一个线索开始寻找,当你找到线索后,而不是得到宝藏,而是拥有下一个线索的地址,一直搜寻线索,直到找到宝藏。
链表是类似的结构,是一系列连接的nodes,每个node包含下一个node的地址,每个节点也包含一个数据。
链表展现形式:

在链表中的第一个节点叫做HEAD,链表的最后一个节点也可以确认,因为它指向下一个节点为NULL。
一个节点包含:
- 数据
- 另一个节点的地址
节点的结构如下:
struct node
{
int data;
struct node *next;
};
创建一个链表
/* Initialize nodes */
struct node *head;
struct node *one = NULL;
struct node *two = NULL;
struct node *three = NULL;
/* Allocate memory */
one = malloc(sizeof(struct node));
two = malloc(sizeof(struct node));
three = malloc(sizeof(struct node));
/* Assign data values */
one->data = 1;
two->data = 2;
three->data=3;
/* Connect nodes */
one->next = two;
two->next = three;
three->next = NULL;
/* Save address of first node in head */
head = one;

链表的强大之处在于能够打破链表,重新组装,例如,如果想要放元素4到1和2之间。步骤如下:
- 创建一个新的节点,分配内存给它
- 添加数值4到新创建的节点
- 指向它的下一个节点是包含2的节点
- 改变包含1的节点的下一个节点是新创建的节点
如果做相同的事情在数组中,那么需要移动接下来所有的元素。
本文介绍了链表的概念,将其比喻为寻宝游戏中的一系列线索,每个节点包含数据及指向下一个节点的地址。链表以HEAD开始,最后一个节点指向NULL。链表的灵活性体现在可以轻松插入元素,如在节点1和2之间插入4,而无需像数组那样移动后续元素。
5万+

被折叠的 条评论
为什么被折叠?



