Use three pointers: previous initialized to null, current initialized to head, and next as a temporary variable. At each step, save current's next pointer in the temporary variable, point current's next to previous to reverse the link, move previous to current, and move current to the saved next. When current becomes null, previous points to the new head. This runs in O of n time and O of one space. Reversing a linked list is a fundamental building block used in many harder problems including reversing nodes in k-groups, palindrome linked list, and reorder list.