
关键点:
- 在于使用三个指针:pre、cur、next;
- 每次将pre和cur之间的链表指向反转
代码
public static Node reverseList(Node head) {
if(head == null) return head;
Node pre = null;
Node cur = head;
Node next = null;
while(cur != null) {
next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
public static DoubleNode reverseList(DoubleNode head) {
if(head == null) return null;
DoubleNode pre = null;
DoubleNode next = null;
DoubleNode cur = head;
while(cur != null) {
next = cur.next;
cur.next = pre;
cur.last = next;
pre = cur;
cur = next;
}
return pre;
}