一、题目描述
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
给定一个链表: 1->2->3->4->5
返回链表 5->4->3->2->1.
二.图解
三.示例代码
public class ReverseNode {
public static void main(String[] args) {
ListNode listNode = new ListNode(1);
ListNode listNode2 = new ListNode(2);
ListNode listNode3 = new ListNode(3);
ListNode listNode4 = new ListNode(4);
listNode.next = listNode2;
listNode2.next = listNode3;
listNode3.next = listNode4;
ListNode result = reverseNode2(listNode);
System.out.println(result);
}
private static ListNode reverseNode(ListNode head) {
ListNode pre = null;
ListNode cur = head;
while (cur != null) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
private static ListNode reverseNode2(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = reverseNode2(head.next);
head.next.next = head;
head.next = null;
return newHead;
}
}