206. Reverse Linked List (翻转链表)
1. 题目翻译
将一个单链表翻转。
2. 解题方法
首先,将链表第二个结点与第一个结点交换位置,然后将1,2结点看成一个整体,并与第3个结点交换位置,以此类推,便可将单链表翻转。如图所示为每次交换之后,链表及指针的状态。
3. 代码
//Runtime: 9ms, 时间复杂度: O(n)
class Solution {
public:
ListNode* reverseList(ListNode* head) {
if (head == NULL)
return NULL;
ListNode *p = head;
ListNode *q = p->next;
while(q){
p->next = q->next;
q->next = head;
head = q;
q = p->next;
}
return head;
}
};