Interview Guides

Given the head of a singly linked list, reverse the list and return the new head. Each node contains an integer value and a next pointer. The function should modify links in-place rather than creating a second list.
0 <= number of nodes <= 5000-5000 <= node.val <= 5000