Problem Statement
Given the head of a singly linked list, reverse the list, and return the reversed list.
Approach
Iterate through the list using three pointers: prev, curr, and next. In each step, save `curr.next`, update `curr.next` to point to `prev`, then move `prev` and `curr` one step forward. The `prev` pointer becomes the new head.
Time & Space Complexity
Time complexity is O(n). Space complexity is O(1) for iterative solution.
