type
Post
status
Published
date
Apr 18, 2023
slug
summary
给你单链表的头节点
head
,请你反转链表,并返回反转后的链表。tags
leetcode
c++
category
算法
icon
password
206. 反转链表
链接:
题解
1.递推或迭代
t是临时变量,指向未翻转的链表;p代表q的前一个节点。
开始状态p指向空,q指向第一个节点,t指向第一个节点的next节点。将链表从前往后翻转。
代码
class Solution { public: ListNode* reverseList(ListNode* head) { if(head == nullptr) return head; ListNode *p=nullptr; ListNode *q = head,*t = nullptr; while(q){ t=q->next; q->next = p; p=q; q=t; } return p; } };
2.递归
递归的思路和递推相反,递归需要从后向前处理。
假设当前链表到都已经被翻转
此时需要让指向,因此可以得到 , 也就是让
代码
class Solution { public: ListNode* reverseList(ListNode* head) { if(!head|| !head->next) return head; ListNode *new_head = reverseList(head->next); head->next->next = head; head->next = nullptr; return new_head; } };
- 作者:GreekLee
- 链接:https://www.rusellwest.top/article/d75888d5-35e2-46df-95dd-09f77247ce32
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。