😶🌫️😶🌫️😶🌫️😶🌫️Take your time ! 😶🌫️😶🌫️😶🌫️😶🌫️
💥个人主页:🔥🔥🔥大魔王🔥🔥🔥
💥所属专栏:🔥魔王的修炼之路–数据结构🔥
如果你觉得这篇文章对你有帮助,请在文章结尾处留下你的点赞👍和关注💖,支持一下博主。同时记得收藏✨这篇文章,方便以后重新阅读。
八、206. 反转链表
206. 反转链表
思路
思路:
这道题如果做不出来,其实主要的问题就是当我们让第二个结点的next指向的内容变成第一个结点时,那么第3个结点的位置就没了,所以只需要再多创建一个指针存储每次要用但是却要被覆盖的结点的地址就ok了(在被覆盖前把它赋给这个存储结点地址的指针1)。一共创建三个结构体指针,两个是相互操作的,每次操作完都把自己变为自己的下一个结点,第三个指针是存储的,当第二个位置被覆盖为前一个地址后,最前面的指针就找不到下一个结点的位置了,那么我们就需要让第三个指针的值赋给它。
特殊情况:
要记得让第一个结点也就是逆序之后的最后一个节点指向NULL,不然就会死循环了。
代码
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* struct ListNode *next;
* };
*/
struct ListNode* reverseList(struct ListNode* head){
if(head==NULL)
{
return head;
}
struct ListNode* cur = head->next;
struct ListNode* prev = head;
if(cur==NULL)
{
return head;
}
while(cur)
{
if(prev==head)
{
prev->next = NULL;
}
struct ListNode* next = cur->next;
cur->next = prev;
prev = cur;
cur = next;
}
return prev;
}
- 博主长期更新,博主的目标是不断提升阅读体验和内容质量,如果你喜欢博主的文章,请点个赞或者关注博主支持一波,我会更加努力的为你呈现精彩的内容。
🌈专栏推荐
😈魔王的修炼之路–C语言
😈魔王的修炼之路–数据结构初阶
😈魔王的修炼之路–C++
😈魔王的修炼之路–Linux
更新不易,希望得到友友的三连支持一波。收藏这篇文章,意味着你将永久拥有它,无论何时何地,都可以立即找到重新阅读;关注博主,意味着无论何时何地,博主将永久和你一起学习进步,为你带来有价值的内容。