java LinkedList的實例詳解
站在Java的角度看,玩隊列不就是玩對象引用對象嘛!
實例代碼:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
public class LinkedList<E> implements List<E>, Deque<E> { Node<E> first; Node<E> last; int size; public boolean add(E e) { final Node<E> l = last; final Node<E> newNode = new Node<>(l, e, null ); last = newNode; if (l == null ) first = newNode; else l.next = newNode; size++; modCount++; return true ; } 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; } } } |
單鏈表反轉:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
/** * 遞歸,在反轉當前節點之前先反轉后續節點 */ public static Node reverse(Node head) { if ( null == head || null == head.getNextNode()) { return head; } Node reversedHead = reverse(head.getNextNode()); head.getNextNode().setNextNode(head); head.setNextNode( null ); return reversedHead; } /** * 遍歷,將當前節點的下一個節點緩存后更改當前節點指針 * */ public static Node reverse2(Node head) { if ( null == head) { return head; } Node pre = head; Node cur = head.getNextNode(); Node next; while ( null != cur) { next = cur.getNextNode(); cur.setNextNode(pre); pre = cur; cur = next; } //將原鏈表的頭節點的下一個節點置為null,再將反轉后的頭節點賦給head head.setNextNode( null ); head = pre; return head; } |
對于數組問題,一般我們要新建數組,必要時移動下標
以上就是java LinkedList 的實例,如有疑問請留言或者到本站社區交流討論,感謝閱讀,希望能幫助到大家,謝謝大家對本站的支持!
原文鏈接:http://wely.iteye.com/blog/2326330