C语言的链表用法示例:节点的修改、增加和删除

申博官网

  60d2e0e7-d361-454d-816d-8481db3d2c2f

  链表,是C语言的一种基础数据结构。

  链表可以动态地进行存储分配,因此可将其看做一个功能强大的数组,在节点中可以定义多种数据类型,还可以根据需要修改、增加、删除节点。

  链表都有一个头指针,一般以 head 来表示,存放的是一个地址。

  链表中的节点分为两类,头结点(head)和一般节点(node),最后一个节点也叫尾节点(end)。其中,头结点是没有数据域的,尾节点一般不再指向其他节点,如下图所示。

  cbca5bc9ce7e4dc0a95c2a34d6202806

  一般节点可分为两部分:数据部分和指针部分。数据部分用来存放该节点所包含的数据,指针部分用来指向下一个节点。

  链表的节点整体用结构体来定义,指针部分定义为指向本结构体类型的指针类型。

  链表就如同车链子一样,head指向第一个节点,第一个节点又指向第二个节点,以此类推,直到最后一个节点,该节点不再指向其它节点,它称为“表尾”,它的地址部分放一个“NULL”,表示“空地址”,到此结束。

  在创建链表时,一般都会用 typedef struct 来定义新的类型名,这样在定义结构体变量时就比较简单。

  创建链表的代码示例如下:

  b33770c03b3b4b70b1885b42cac0763d

  创建链表

  输出链表比较简单,遍历输出即可。如下图所示。

  c324dee082c74c5a9e45a3d5c321adaf

  运行上面的程序,比如创建了一个链表,里面包含3个节点,程序运行如下:

  e9f7f50e5a8540cba900feaccaed8d55

  修改链表中特定节点的值,如下图所示。

  68e3df3ffbe846e8b7b55aae931b8d32

  增加节点就是把前节点的指针域链接上增加节点的数据域,再把增加节点的指针域链接上后节点的数据域。如下图所示。

  dea1eb7e377847d8bf8ac4bf84820852

  增加节点

  比如删除链表的节点q,就是把前节点p的指针域越过要删除的节点q,直接指向下下个节点。

  即:p->next = q->next

  需要注意的是,一定要记得释放q节点的空间。

  5725f9281714452da30c1548f780def7

  删除节点

  C语言的标准库介绍

  深入理解C语言的指针

  C语言 typedef 的两种用法

达到当天最大量