链表之双链表

链表的定义:用任意一组存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。

双链表的定义:节点 有prev和next,首尾相连;相当于每个人手拉手的形式,左右手分别拉着谁。

双链表的结构:


双链表存储结构单元


双链表存储结构单元你的表现形式


双链表表现形式

研究双链表的增删改查:

增:  第一步:就S的next对象指向P的next对象;s.next = p.next.prev;

        第二步:将p的next对象(a3)的prev指向S;p.next.prev = s;

        第三步:将S的prev指向P;s.prev = p;

        第四步:将P的next指向S. 。p.next =s ;

删:第一步:p的prev对象的next,指向p的next;p.prev.next = p.next;

        第二步:p的next对象的prev,指向p的prev;p.next.prev = p.prev;

双链表的应用之LinkedList :

LinkedList的增删改查的源码:

首先在linkedList里面定义一个节点信息(Link):

data:数据信息;  previous:前一个节点;next:后一个节点。

LinkedList的add(int index,Object object):

第一步:判断脚标是否越界;

第二步:查找index所对应的节点;所采用的是队头队尾查找方法,第一个节点赋值给link,如果index小于size的二分之一,从队头开始往后查找link  =  link.next;反之从队尾查找 link = link.prevoius。获取所需节点

第三步:获取link的前一个节点prevoius;在link和previous之间插入一个新的节点newLink;

第四步:将prevoius的next指向newLink;将link的previous指向newLiknk;

LinkedList的remove(int index)方法:

第一步:判断脚标是否越界;

第二步:用队头队尾方法,找到目标link;

第三步:获取link的前一个节点previous和后一个节点next;

第四步:节点previous的next指向next;节点next的previous指向previous。

LinkedList的set(int index,Object o)方法:

第一步:找到节点;第二步:将节点的数据改成所需要的。

LinkedList的get方法太简单了,就是用 队头队尾查找法 获取到节点,所以不做过多描述了。

LinkList的继承和依赖的关系:


最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容