学习JavaScript数据结构与算法(四)——循环链表

循环链表可以向普通链表一样只有单向引用,也可以像双向链表一样有双向引用。

循环链表和普通链表的区别就在于,循环链表的最后一个元素指向下一个元素的指针(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;
        }
        
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值