Problem Description: Given a singly linked list, reverse it. For example, if the linked list is 1 -> 2 -> 3 -> 4 -> 5, then after reversing, it should become 5 -> 4 -> 3 -> 2 -> 1.
Input: A linked list.
Output: The reversed linked list.
Constraints: You may not modify the values in the nodes, only the pointers. The list could be empty or contain a single element.