循环链表可以像链表一样只有单向引用,也可以像双向链表一样有双向引用。循环链表和链表之间唯一的区别在于,最后一个元素指向下一个元素的指针(tail.next
)不是引用null
,而是指向第一个元素(head
),如下图所示。
双向循环链表有指向head
元素的tail.next
,和指向tail
元素的head.prev
。
我们并不打算在这本书中完整地介绍
CircularLinkedList
算法(源代码与LinkedList
和DoublyLinkedList
非常类似)。不过,你可以下载本书的源代码来访问这部分代码。在本书的源代码中,你还会找到所有三个链表类的ECMAScript 6版本。