数据结构之线性表(四)——循环链表和双向链表

将单链表中终端结点的指针端由空指针改为指向头结点,就使整个单链表形成一个环,这种头尾相接的单链表称为单循环链表,简称循环链表(circular linked list)。

为了使空链表与非空链表处理一致,我们通常设一个头结点。如图所示:循环链表带有头结点的空链表。

数据结构之线性表(四)——循环链表和双向链表

对于非空的循环链表如图所示。

数据结构之线性表(四)——循环链表和双向链表

双向链表(double linked list)是在单链表的每个结点中,再设置一个指向前驱结点的指针域。

既然单链表也可以有循环链表,那么双向链表当然也可以是循环表。

双向链表的循环带头结点的空链表如图所示:

数据结构之线性表(四)——循环链表和双向链表

非空的循环的带头结点的双向链表如图所示:

数据结构之线性表(四)——循环链表和双向链表

数据结构之线性表(四)——循环链表和双向链表

数据结构之线性表(四)——循环链表和双向链表

数据结构之线性表(四)——循环链表和双向链表