链表

本文介绍了链表的概念,将其比喻为寻宝游戏中的一系列线索,每个节点包含数据及指向下一个节点的地址。链表以HEAD开始,最后一个节点指向NULL。链表的灵活性体现在可以轻松插入元素,如在节点1和2之间插入4,而无需像数组那样移动后续元素。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在一个寻宝游戏中,你从第一个线索开始寻找,当你找到线索后,而不是得到宝藏,而是拥有下一个线索的地址,一直搜寻线索,直到找到宝藏。
链表是类似的结构,是一系列连接的nodes,每个node包含下一个node的地址,每个节点也包含一个数据。
链表展现形式:
在这里插入图片描述
在链表中的第一个节点叫做HEAD,链表的最后一个节点也可以确认,因为它指向下一个节点为NULL。

一个节点包含:

  1. 数据
  2. 另一个节点的地址

节点的结构如下:

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之间。步骤如下:

  1. 创建一个新的节点,分配内存给它
  2. 添加数值4到新创建的节点
  3. 指向它的下一个节点是包含2的节点
  4. 改变包含1的节点的下一个节点是新创建的节点

如果做相同的事情在数组中,那么需要移动接下来所有的元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值