单项链表
找到当前头结点前一个节点
把下一个节点设置成头结点
把原来头结点设置成当前头结点的下一个节点
class Node1{
int value;
Node1 next;
public Node1(int data) {
this.value = data;
}
}
public Node1 reverse(Node1 head) {
Node1 pre = null;
Node1 next = null;
while (head != null) {
next = head.next;
head.next = pre;
pre = head;
head = next;
}
return pre;
}
双向链表
找到当前头结点的前一个节点和下一个节点
下一个节点变成头结点
把原来头结点变成当前头结点的下一个节点
class DoubleNode{
public int value;
public DoubleNode last;
public DoubleNode next;
public DoubleNode (int data) {
this.value = data;
}
}
public Node reverseDoubleLinkedList(Node head) {
DoubleNode pre = null;
DoubleNode next = null;
while (head != null) {
next = head.next;
head.next = pre;
head.last = next;
pre = head;
head = next;
}
}