💡题目分析
给你单链表的头节点 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们多多支持哦🥰🥰🥰