-
从老链表第一个元素开始,逐个取出
- 第一个取出的元素,让其
next
指向nullptr
。由于改变其指向,会导致后续链表没有指向消失,所以要在这步之前将其后续元素的指向放在一个新变量中 - 再将后续结点的指向当前结点,不断反复运行就可以实现链表反转
- 第一个取出的元素,让其
-
难点就是如何在设置链表指向结点时,不同指针的关系不要混乱
-
#include <iostream>struct ListNode {int val;ListNode* next;ListNode(): val(0), next(nullptr) {}ListNode(int v): val(v), next(nullptr) {}ListNode(int v, ListNode* _next): val(v), next(_next) {} };class Solution { public:ListNode* reverseList(ListNode* head) {ListNode* cur = head, *pre = nullptr;for ( ; cur != nullptr; ) {ListNode* temp = cur->next;cur->next = pre;pre = cur;cur = temp;}return pre;} };void show(ListNode* head) {for (auto* p = head; p != nullptr; p = p->next)std::cout << p->val << " ";std::cout << std::endl; }int main() {ListNode* l5 = new ListNode(5);ListNode* l4 = new ListNode(4, l5);ListNode* l3 = new ListNode(3, l4);ListNode* l2 = new ListNode(2, l3);ListNode* l1 = new ListNode(1, l2);show(l1);Solution s;ListNode* head = s.reverseList(l1);show(head);return 0; }
-
核心代码在11行到23行
-
汇总
代码随想录算法训练营第三天 | 链表理论基础 | 206.反转链表
2025/9/16 5:55:53
来源:https://blog.csdn.net/taoyong001/article/details/144457423
浏览:
次
关键词:代码随想录算法训练营第三天 | 链表理论基础 | 206.反转链表
版权声明:
本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。
我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com