实现单链表和双链表反转
单链表
class Node {
public Node next;
public int value;
public Node(int data) {
value = data;
}
}
双链表
class DoubleNode{
public DoubleNode preNode;
public DoubleNode nextNode;
public int value;
public DoubleNode(int value) {
this.value = value;
}
}
单链表反转
private static Node reverseNode(Node head) {
Node pre = null;
Node next;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
解析
1、假设初始节点如下
2、next = head.next;
3、head.next = pre;
4、pre = head;
5、head = next;
以此反复处理。
双链表反转
private static DoubleNode reverseDoubleNode(DoubleNode head) {
DoubleNode pre = null;
DoubleNode next;
while (head != null) {
next = head.nextNode;
head.nextNode = pre;
head.preNode = next;
pre = head;
head = next;
}
return pre;
}