链表的定义:用任意一组存储单元存储线性表的数据元素,这组存储单元可以是连续的,也可以是不连续的。
双链表的定义:节点 有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的继承和依赖的关系: