链表这门内功大致分为三个层次:
第一层叫做“单向链表”,仅有一个后指针,指向下一个数据。
第二层叫做“双向链表”,有两个指针,后指针指向下一个数据,前指针指向上一个数据。
第三层叫做“二叉树”,把后指针去掉,换成左右指针。
01、LinkedList的内心功法(基本结构)
//链表中的节点类
private static class Node<E> {
E item; //节点中存储的元素
Node<E> next; //指向下一个节点的指针
Node<E> prev; //指向上一个节点的指针
//构造一个新的节点(这是构造方法)
Node(Node<E> prev, E element, Node<E> next) {
this.item = element;
this.next = next;
this.prev = prev;
}
}
由三部分组成:
节点的元素
下一个节点
上一个节点

对于第一个节点来说,prev为null。
对于最后一个节点来说,next为null。
其余节点是prev指向前一个,next指向后一个。
对这个基本的,一定要牢记于心。
02、LinkedList 增删改查
使用之前初始化。
LinkedList<String> list = new LinkedList();
LinkedList并不需要指定大小,因为我没有大小(hhh),内存多大我多大。
1)add()方法插入元素:
list.add("董李阳1");
list.add("董李阳2");
list.add("董李阳3");
add()方法内部源码:(其实是调用LinkLast方法)
public boolean add(E e) {
linkLast(e); //在列表尾部添加元素
return true; //成功返回true
}
linkLat,顾名思义,就是链表尾部添加:
/**
* Links e as last element.
* 在列表的尾部添加指定的元素
*/
void linkLast(E e) {
final Node<E> l = last; //获取链表的最后一个节点
final Node<E> newNode = new Node<>(l, e, null); //创建一个新节点,并将其设置为链表的最后一个节点
last = n

最低0.47元/天 解锁文章
1434

被折叠的 条评论
为什么被折叠?



