力扣——206.反转链表倒序输出链表
206. 反转链表 - 力扣(LeetCode)
思路(迭代)
设三个指针,前后两个指针都为空,当前指针为输入的头指针
开始循环——判断条件为当前节点不为空
先给下一个节点赋值为——当前节点的下一个
改变当前节点的指向——将当前节点的下一个设为指向前一个节点
更新前一个节点和当前节点——前一个节点设为当前节点,当前节点设为下一个节点
返回前一个节点
代码
class Solution {
public:ListNode* reverseList(ListNode* head) {ListNode* previous=nullptr;ListNode* current=head;ListNode* next=nullptr;while(current!=nullptr){next=current->next;current->next=previous;previous=current;current=next;}return previous;}
};
思路(递归)
代码
class Solution {
public:ListNode* reverseList(ListNode* head) {if(head==nullptr||head->next==nullptr){return head;}ListNode* newHead=reverseList(head->next);head->next->next=head;head->next=nullptr;return newHead;}
};
LCR 024. 反转链表 - 力扣(LeetCode)
思路
同206
代码
同206