13.6 链表
13.6.1 链表的概念
我们知道,列表是指按序组成的项集。数组就是一种列表。在数组中,其顺序是由其索引隐式的给定的。我们就是使用索引来访问和操作数组元素的。关于数组的一个重要问题是数组的大小必须在开始时就精确的指定。正如前面所指出,这在很多实际的应用中是件困难的事。
一个完全不同的列表表示方法是用结构体表示一个列表成员,它含有指向下一个结构体的“链接”,如图所示。这种列表称为链表,因为它是一种列表,其顺序由该项与下一项的链接给定。
链表的每个结构体称为节点,它由两个字段组成,一个包含数据项,另一个包含指向链表中下一个数据项的地址(即指向下一个数据项的指针)。因此,链表是结构体集合,其顺序不是由他们在内存中的物理位置(像数组一样)确定的,而是由其逻辑链接(他作为结构体的部分数据存储在其中)确定的。这种链接是指向同类型的另一个结构体的指针。这种结构体表示如下:
struct node{
int key;
struct node *next;
};
13.6.2 链表的操作
链表的操作是链表的重点,稍后我会附上代码实例。这里先介绍有哪些基本操作:
- 创建链表
- 遍历链表
- 计算链表中的数据项目
- 显示链表(或子链表)
- 查找某数据项,用于编辑或显示
- 插入一个数据项
- 删除一个数据项
- 连接两个链表