反转一个单链表。
示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
public class ReverseNode {
// 双指针法
public static Node reverseNode(Node head) {
Node pre = null;
Node cur = head;
while (cur != null) {
Node tmp = cur.next;
cur.next = pre;
pre = cur;
cur = tmp;
}
return pre;
}
// 递归
public static Node reverseNode(Node head) {
return reverse(null, head);
}
public static Node reverse(Node pre, Node cur) {
if (cur == null) {
return pre;
}
Node tmp = cur.next;
cur.next = pre;
return reverse(cur, tmp);
}
}