题目
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
思考
假设链表为1→2→3→∅,变成 ∅←1←2←3。
在遍历链表时,将当前节点的next 指针改为指向前一个节点。在更改引用之前,还需要存储后一个节点。最后返回新的头引用。
public ListNode reverseList(ListNode head) {
while(head==null){
return null;
}
ListNode cur=head;
ListNode pre=null;
while(cur!=null){
ListNode next=cur.next;
cur.next=pre;
pre=cur;
cur=next;
}
return pre;
}
复杂度分析
时间复杂度:O(n),其中 n 是链表的长度。需要遍历链表一次。
空间复杂度:O(1)。