class Node{
int val;
Node next;
public Node(int val) {
this.val = val;
}
}
/**
* 构造链表
* @param number
* @return
*/
private Node init(int number) {
Node node = new Node(1);
Node head = node;
for (int i = 2; i <= number; i++) {
Node tmp = new Node(i);
head.next = tmp;
head = tmp;
}
return node;
}
/**
* 反转链表
* 利用双指针,pre和cur,
* 开始时pre指向null,cur指向head节点,然后让cur的next指向pre,然后pre和cur都向前移动一位,在重复cur的next指向pre
*/
@Test
public void reverseNode() {
Node node = init(5);
Node pre = null;
Node cur = node;
while (cur != null) {
Node tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
System.out.println(pre);
}