链表相关知识点:
1. 列表的定义:列表(List)的抽象概念是指一组相同数据类型元素的有序集合。
2. 链表的定义:
链表(link list)是一种有顺序的列表,且数据项应包含链接(link),链接可以链接到其他数据项,此数据项称为节点,其形式为:
3. 链表有以下的特性:
- 链表一般可以用数组或结构形式来表示。
- 节点顺序在内存中的实际地址可以不连续,或者是经由随机配置,不像数组的元素在内存中的实际地址是连续的。
4. 数组因为有下标可以很容易地存取下标所指的数据,因此只要扩充一维数组为二维数组,新增的数组当链接使用,即可用数组来表示链表,一般称这样的数组为「链接数组」。
5. 单向链表只能以单一方向找到下一个节点,但要知道它的前一个节点,则要在查找过程中记录此数据,否则你无法知道前一个节点,于是单向链表的功能会受到限制。
双向链表(doubly linked list)则是一个节点有两个链接,其中一个如单一链表的指向下一个的链接,另一个则为指向前一个节点的链接。
6. 数组来表示链表,因为数组有下标可直接存取数组中的数据,但是当你声明的数组太小,可能程序运作中会碰到无空间可放数据的已满情况,或者声明太大时,当程序并不会用到那么多空间时,又会浪费空间,要解决固定数组声明所造不便时,一般有两种方法可克服:
- 使用动态数组,不要声明数组大小。
- 使用结构定义和指针,从内存取得空间。
7. 堆栈结构以数组来表示时,因为链表与数组有类似的使用方式,如果要随机配置内存空间时,可将堆栈和链表结合形成链接堆栈(linked stack)。 链接队列(linked queue)也是用链表来表示队列。