概念
循环链表可以分为循环单链表和循环双链表。
循环单链表
循环单链表即尾指针改为指向头结点的单链表,整个链表形成一个环。
单链表的判空条件是头结点的后继指针是否为空,而循环单链表的判空条件为头结点后继指针是否等于头指针。
循环双链表
类似于单链表,首尾结点构成环。
空表:头结点的 prev 和 next 都等于 H
静态链表
用数组来描述线性表的链式存储结构。
静态链表也包含数据域和指针域(数组下标),又称游标。
实现
#define MaxSize 50
// 静态链表的最大长度
typedef int ElemType
typedef struct{
ElemType data;
// 数据域:存储数据元素
int next;
// 指针域:存储下一个元素的数组下表
}SLinkList[MaxSize];
- 数组的第一个元素不存储数据,它的指针域存储第一个元素所在的数组下标。
- 链表最后一个元素的指针域值为 -1 。