文章目录
- 💡题目分析
- 💡解题思路
- 🚩方法1: 反转指针指向
- 🔔接口源码:
- 🚩方法2:取节点头插
- 🔔接口源码:
题目链接👉LeetCode 206.反转链表👈
💡题目分析
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
💡解题思路
🚩方法1: 反转指针指向
定义 n1、n2、n3分别代表一个节点的前、中、后 三个位置,然后进行改变指针指向与迭代
👇图解👇
🔔接口源码:
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表示当前节点的下一个节点( 保存节点)
👇图解👇
🔔接口源码:
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们多多支持哦🥰🥰🥰