循环链表
1 循环链表
循环链表是另一种形式的链式存储结构。循环链表有循环单链表和循环双链表两种类型。它的特点是表中最后一个结点的指针域指向头结点,整个链表形成一个环。由此,从表中任一结点出发均可找到表中其他结点。
1.1 循环单链表
循环单链表和单链表的区别在于,表中最后一个结点的指针不是NULL
,而改为指向头结点,从而整个链表形成一个环。
在循环单链表中,表尾结点的next
域指向L
,故表中没有指针域为NULL
的结点,因此,循环单链表的判空条件不是头结点的指针是否为空,而是它是否等于头指针。
在单链表中只能从表头结点开始往后顺序遍历整个链表,而循环单链表可以从表中的任意一个结点开始遍历整个链表。
1.2 循环双链表
在循环双链表中,头结点的prior
指针还要指向表尾结点。
在循环双链表L
中,某结点*p
为尾结点时,p->next==L;
当循环双链表为空表时,其头结点的prior
域和next
域都等于L
。