【练习】【链表】力扣热题100 206. 反转链表
题目
206. 反转链表
来源:力扣热题100 206. 反转链表
思路(注意事项)
原地逆置
纯代码
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode *pre = nullptr, *p = head;
while (p != nullptr)
{
ListNode *tmp = p -> next;
p -> next = pre;
pre = p;
p = tmp;
}
return pre;
}
};
题解(加注释)
class Solution {
public:
ListNode* reverseList(ListNode* head) {
// 定义两个指针 pre 和 p,分别指向空和链表的头节点
ListNode *pre = nullptr, *p = head;
// 遍历链表,反转链表
while (p != nullptr)
{
// 保存当前节点的下一个节点
ListNode *tmp = p -> next;
// 将当前节点的 next 指针指向 pre
p -> next = pre;
// 将 pre 指向当前节点
pre = p;
// 将 p 指向下一个节点
p = tmp;
}
// 返回反转后的链表的头节点
return pre;
}
};