206. 反转链表 - 力扣(LeetCode)
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
题解:
将头节点指向空,其他的节点通过三个指针将节点中的指向反转过来
pre当前节点的前一个节点
cur当前节点
nxt记录当前节点的下一个节点,防止变换中丢失
具体过程是:pre从nullptr开始,每次记录cur的前一个节点,然后当前节点cur改成指向pre,再将cur往后移动一个节点,这时候就要nxt提前记录cur要往后移动的节点,避免改变cur指向的时候丢失
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* cur=head;
ListNode* pre=nullptr;
while(cur!=nullptr){
ListNode* nxt=cur->next;
cur->next=pre;
pre=cur;
cur=nxt;
}
return pre;
}
};