单链表代码如下

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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
package com.code.note.listnode;

import lombok.extern.slf4j.Slf4j;

/**
* 单链表
*
* @param <T>
*/

@Slf4j
public class ListNode<T> {

private int size;
private Node head;

public class Node {
T value;
Node next;

Node(T value) {
this.value = value;
}
}

public int size() {
return size;
}

public void addFromHead(T value) {
Node n = new Node(value);
size++;

if (head == null) {
head = n;
return;
}

n.next = head;
head = n;

return;
}

public void addToTail(T value) {
Node n = new Node(value);
size++;

if (head == null) {
head = n;
return;
}

Node x = head;
while (x.next != null) {
x = x.next;
}
x.next = n;


/**
// 这里哪里不对?

Node x1 = head;
while (x1 != null) {
x1 = x1.next;
}
x1 = n;

**/
}

// 遍历
public void traverse() {
if (head == null) return;
Node x = head;
while (x != null) {
log.info("{}", x.value);
x = x.next;
}
}

public static void main(String[] args) {
log.info("hello");
ListNode<Integer> listNode = new ListNode<>();
listNode.addToTail(1);
listNode.addToTail(2);
listNode.addToTail(3);
listNode.addToTail(4);
listNode.addToTail(5);
log.info("{}", listNode.size());
listNode.traverse();
}


}

测试结果

1
2
3
4
5
6
7
[2020-11-07 18:12:48,443] [INFO ] [main ] [main] [ListNode:84] - hello
[2020-11-07 18:12:48,460] [INFO ] [main ] [main] [ListNode:91] - 5
[2020-11-07 18:12:48,461] [INFO ] [main ] [traverse] [ListNode:78] - 1
[2020-11-07 18:12:48,461] [INFO ] [main ] [traverse] [ListNode:78] - 2
[2020-11-07 18:12:48,461] [INFO ] [main ] [traverse] [ListNode:78] - 3
[2020-11-07 18:12:48,462] [INFO ] [main ] [traverse] [ListNode:78] - 4
[2020-11-07 18:12:48,462] [INFO ] [main ] [traverse] [ListNode:78] - 5