1 class MyLinkedList<E> {
2
3 int size = 0;//集合元素的个数
4
5 Node<E> first;//指向第一个元素
6 Node<E> last;//指向最后一个元素
7
8 //元素
9 private static class Node<E> {
10 E item;//元素核心
11 Node<E> prev;//元素头部
12 Node<E> next;//元素尾部
13
14 Node(Node<E> prev, E item,Node<E> next) {
15 this.item = item;
16 this.prev = prev;
17 this.next = next;
18 }
19 }
20
21 //集合添加元素操作
22 public boolean add(E e) {
23 linkLast(e);
24 return true;
25 }
26
27 //集合添加元素逻辑(双向链表)
28 private void linkLast(E e) {
29 //局部常量l指向此时的最后一个元素
30 final Node<E> l = last;
31 // 通过l实参,使加入的新元素newNode其头部指向集合的最后那个元素
32 Node newNode = new Node(l, e, null);
33 //将新元素newNode标记为最后一个元素
34 last = newNode;
35 if (l == null) {//如果为true,说明newNode是集合中添加的第一个元素
36 //将newNode标记为第一个元素
37 first = newNode;
38 } else { //否则,就把倒数第二个元素的尾部指向最后一个元素
39 l.next = newNode;
40 }
41 size++;
42 }
43
44 }