文章目录
- 💡题目分析
- 💡解题思路
-
- [🚩方法1: 反转指针指向](#🚩方法1: 反转指针指向)
- 🔔接口源码:
- 🚩方法2:取节点头插
- 🔔接口源码:
题目链接 👉LeetCode 206.反转链表👈
💡题目分析
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
💡解题思路
🚩方法1: 反转指针指向
定义 n1、n2、n3分别代表一个节点的前、中、后 三个位置,然后进行改变指针指向与迭代
👇图解 👇
🔔接口源码:
c
struct ListNode* reverseList(struct ListNode* head)
{
if (head == NULL)
{
return NULL;
}
struct ListNode* n1 = NULL;
struct ListNode* n2 = head;
struct ListNode* n3 = n2->next;
while (n2)
{
n2->next = n1;
//迭代
n1 = n2;
n2 = n3;
if (n3)
{
n3 = n3->next;
}
}
return n1;
}
🚩方法2:取节点头插
把原链表节点一个一个地取下来重新进行头插,最后可以实现反转链表
定义一个 rhead表示反转链表的新的头节点, cur表示当前节点, next表示当前节点的下一个节点( 保存节点)
👇图解 👇
🔔接口源码:
c
struct ListNode* reverseList(struct ListNode* head)
{
struct ListNode* cur = head;
struct ListNode* rhead = NULL;
while (cur)
{
struct ListNode* next = cur->next; //头插前先用next保存cur下次要指向的节点
//头插
cur -> next = rhead;
rhead = cur;
//迭代
cur = next;
}
return rhead;
}
🥰希望烙铁们能够理解欧!
总结🥰
以上就是本题讲解的全部内容啦🥳🥳🥳🥳
本文章所在【C/C++刷题系列】专栏,感兴趣的烙铁可以订阅本专栏哦🥳🥳🥳
前途很远,也很暗,但是不要怕,不怕的人面前才有路。💕💕💕
小的会继续学习,继续努力带来更好的作品😊😊😊
创作写文不易,还多请各位大佬uu们多多支持哦🥰🥰🥰