参考网址:
链表基础知识详解(非常详细简单易懂)_不秃也很强的博客-CSDN博客
一、链表的概念
1.定义:物理存储非连续,数据元素的逻辑顺序通过链表中的指针链接次序实现的一种线性存储结构。
2.作用:通过节点把离散数据链接在一起,组成一个表。
3.特点:链表中的每一个元素称为节点,节点在运行时动态生成(malloc),每个节点一般采用结构体的形式组织,包括存储数据元素的数据域和存储下一节点地址的指针域,数据域存放各种实际的数据如num、score等,指针域存放下一节点的首地址如next等。
4.构成:
typedef struct student{
int num;
char name[20];
struct student *next;
}STU;
5.分类:单向链表、带根节点的链表、双向链表、环形链表
(1)单向链表
单向链表
(2)带根节点的链表
为了顺利的插入,通常一条链表我们会人为地规定一个根节点,这个根节点称为生产者。通常根节点还会有一个节点计数器,用于统计整条链表的节点个数。
带根节点的链表
(3)双向链表
双向链表与单向链表的区别就是节点中有两个节点指针,分别指向前后两个节点,其它完全一样。