代码题:
给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。
数据范围: 0\leq n\leq10000≤n≤1000
要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。
如当输入链表{1,2,3}时,
经反转后,原链表变为{3,2,1},所以对应的输出为{3,2,1}。
解题:
class solution{
public ListNode* ReverseList(ListNode* pHead){
//定义一个指向为null的节点指针
ListNode* pre = nullptr;
//定义一个临时指针指向当前指针的next
ListNode* t;
while(pHead){
//首先将当前指针的next赋值给临时t
t = pHead->next;
//然后将当前指针的next指向pre,代表最后一个节点null
pHead->next = pre;
//然后将当前节点赋值给pre节点
pre = pHead;
//最后将临时t赋值给当前节点
pHead = t;
}
return pre;
}
}