思想 :
在遍历节点时将节点翻转, 需要借助于两个节点 pre 和 curr 这两个节点。pre 节点表示当前已经反转节点的头结点,curr节点表示当前已经翻转到哪一个节点。
时间复杂度 O(N),因为只是遍历一次就可以搞定
空间复杂度O (1)
代码实现
public ListNode ReverseList(ListNode head) {
if (head == null) return null;
ListNode pre;
ListNode curr = head.next;
pre = head;
pre.next = null;
while (curr != null) {
ListNode node = curr.next;
curr.next=pre;
pre=curr;
curr = node;
}
return pre;
}