题目描述:
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
数据范围:0≤n≤1000
要求:空间复杂度 O(1),时间复杂度 O(n) 。
如当输入链表{1,2,3}时,
经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
以上转换过程如下图所示:
测试用例:
输入:{1,2,3}
返回值:{3,2,1}
代码:
class Solution{
public:
ListNode* ReverseList(ListNode *pHead){
if(pHead == NULL)
return NULL;
ListNode*cur = pHead;
ListNode*pre = NULL;
while (cur != NULL){
ListNode*temp = cur->next;
cur->next = pre;
pre = cur;
cur = temp;
}
return pre;
}
}