Given a singly linked list, write an efficient algorithm to reverse it in-place and analyze its time complexity.