循环链表可以向普通链表一样只有单向引用,也可以像双向链表一样有双向引用。
循环链表和普通链表的区别就在于,循环链表的最后一个元素指向下一个元素的指针(tail.next)不是引用null,而是指向第一个元素(head)。
双向循环链表有指向head元素的tail.next,和指向tail元素的head.prev。
function CircularLinkedList() {
var Node = function(element){
this.element = element;
this.next = null;
};
var length = 0;
var head = null;
this.append = function(element){
var node = new Node(element),
current;
//向为空的列表添加一个元素
if (head === null){
head = node;
}
else {
current = head;
//循环列表,直到找到最后一项
//列表的最后一个节点的下一个元素指向head而不是null
while(current.next !== head){
current = current.next;
}
//找到最后一项,将其next赋为node,建立链接
current.next = node;
}