静态内部类节点

alt

成员变量:头,尾,

alt

节点的构造器比较简单: alt

头插方法: 首选使用f获取链表的头结点,并且创建一个新的节点,这个节点在创建时,这个节点的next就指向了first,pre = null; 接着使得让first 指向新的节点,并且判断如果原先的first节点为null时,则表明之前的链表为空,于是这个新创建的节点同时也是尾节点,如果f不为null,那么就让f节点的pre指向新创建的node;于是为完成了双向链表的维护;并且修改链表的长度;

alt

尾插:相似 alt

add方法:

alt

remove方法:如果想删除节点空元素为空的节点,首先会使用x从链表的头部开始寻找,直至链表尾部,如果找到了那么就使用unlink方法删除节点x,注意此处分开写的原因在于null不能使用else方法中的.equals方法,而是使用了 == null方法;

alt

unlink(x):这个方法的前提是x节点就是我们想要删除的节点,方法中会首先获得这个节点的前一个节点和此节点的后一个节点;如果删除的节点的pre == null则代表x节点为头结点,那么直接让first = next;否则不是头结点的话就让x节点的前一个节点的next指向x节点的next;并且让x.pre = null;

同理如果删除的节点next == null则代表x为尾巴节点,则直接让last= pre;否则不为尾巴节点,那么让x的前一个节点的next指向x节点的next,并且x.pre = null ;

最后设置x.item = null ;size 减少1;

alt