LeetCode-in-Dart

206. Reverse Linked List

Easy

Given the head of a singly linked list, reverse the list, and return the reversed list.

Example 1:

Input: head = [1,2,3,4,5]

Output: [5,4,3,2,1]

Example 2:

Input: head = [1,2]

Output: [2,1]

Example 3:

Input: head = []

Output: []

Constraints:

Follow up: A linked list can be reversed either iteratively or recursively. Could you implement both?

Solution

/**
 * Definition for singly-linked list.
 * class ListNode {
 *   int val;
 *   ListNode? next;
 *   ListNode([this.val = 0, this.next]);
 * }
 */
class Solution {
  ListNode? reverseList(ListNode? head) {
    ListNode? curr = head;
    ListNode? prev = null;
    while (curr != null) {
      ListNode? Next = curr.next;
      curr.next = prev;
      prev = curr;
      curr = Next;
    }
    return prev;
  }
}