Your question is Linked List Reversal With Pointers. Start with the requirements on the right.
Run and submit as often as you like. When you're ready, talk me through your approach or go straight to the code.
An EPAM Systems data-processing component stores an ordered sequence as a singly linked list. Given the list head, reverse the list in place by changing node pointers, then return the new head.
The input is head, either None or a reference to a ListNode with integer field val and pointer field next. The evaluator supplies the ListNode implementation. Return a reference to the new head after every next pointer has been reversed. Do not create replacement nodes or use an array to rebuild the list.
For test cases below, a JSON array represents the linked list's values. The expected result is the value sequence obtained by traversing the returned head.
def reverse_linked_list(head):