Linkedlist简介

1、底层实现原理

LinkedList底层的数据结构是基于双向循环链表的,且头结点中不存放数据,如下:

         

既然是双向链表,那么必定存在一种数据结构——我们可以称之为节点,节点实例保存业务数据,前一个节点的位置信息和后一个节点位置信息,如下图所示:

         

2、linkedList添加数据过程:

第一步:初始化后LinkedList实例的情况:

         

第二步:初始化一个预添加的Entry实例(newEntry)。

   Entry newEntry = newEntry(e, entry, entry.previous);

          

第三步:调整新加入节点和头结点(header)的前后指针。

   newEntry.previous.next = newEntry;

   newEntry.previous即header,newEntry.previous.next即header的next指向newEntry实例。在上图中应该是“4号线”指向newEntry。

   newEntry.next.previous = newEntry;

   newEntry.next即header,newEntry.next.previous即header的previous指向newEntry实例。在上图中应该是“3号线”指向newEntry。

调整后如下图所示:

        图——加入第一个节点后LinkedList示意图

     

下面分解“添加第二个数据”的步骤:

第一步:新建节点。

        图——添加第二个节点

       

第二步:调整新节点和头结点的前后指针信息。

        图——调整前后指针信息

       

添加后续数据情况和上述一致,LinkedList实例是没有容量限制的。    

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值