Linkedlist简介

来源:互联网 发布:linux 压缩文件命令 编辑:程序博客网 时间:2024/05/16 09:13

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实例是没有容量限制的。    

1 0