给定一个单链表的头节点 head
,反转该链表并返回反转后的链表。
我们可以使用迭代或递归的方式来反转链表。
cur
、pre
和 next
。cur.next
指向 pre
,然后将 pre
和 cur
向前移动一步。cur
到达链表末尾。next
指针指向当前节点,并将当前节点的 next
置空。class Solution {
public ListNode reverseList(ListNode head) {
ListNode cur = head;
ListNode pre = null;
while (cur != null) {
ListNode next = cur.next;
cur.next = pre;
pre = cur;
cur = next;
}
return pre;
}
}
class Solution {
public ListNode reverseList(ListNode head) {
if (head == null || head.next == null) {
return head;
}
ListNode newHead = reverseList(head.next);
head.next.next = head;
head.next = null;
return newHead;
}
}