这道题的题目描述就跟标题一样了,一个经典问题,基本可以默写出来了,很简单。头插法要创建额外O(n)空间,这里不介绍。
具体代码如下,因为使用了auto,需要在支持C++11的编译器中运行:
ListNode* reverseList(ListNode* head) {
typedef ListNode* Node;
if(head==nullptr)
return head;
Node first = head;
Node second = first->next;
if(second == nullptr)
return head;
first->next = nullptr;
while(second) {
auto temp = second->next;
second->next = first;
first = second;
second = temp;
}
return first;
}