一、思路
迭代
二、解题方法
以输入为 1 -> 2 -> 3 -> 4 -> 5 的链表为例
三、code
class Solution {
public:
ListNode* reverseList(ListNode* head) {
ListNode* prev=nullptr;//反转后的链表
ListNode* curr=head;//当前更新的原有链表
while(curr)//原有链表无值时停止循环
{
ListNode* nextNode=curr->next;//定义 nextNode 是为了保存当前节点 curr 的下一个节点指针,防止在执行 curr->next = prev; 操作后,丢失对原链表后续节点的引用。
curr->next=prev;//将curr的next指向prev,用来实现反转
prev=curr;//记录每一轮反转的值
curr=nextNode;//更新curr用于下一次操作
}
return prev;
}
};
=========================================================================学到的知识:
使用prev和迭代建立一个新的链表,用来存储反转后的链表。