这次我们将介绍就地反转一个链表的模板,这个模板解决涉及逆转一个链表的时候非常有用,我们可以做到不使用额外的内存,在时间复杂度为O(n)的情况下完成。
该文参考如下博客:
https://emre.me/coding-patterns/in-place-reversal-of-a-linked-list/
我们直接看这个题目:
https://leetcode.com/problems/reverse-linked-list/
- 首先我们介绍iteration方法,这是一种遍历整个链表结构的方法。
我们初始化一个curr指针指向head,然后一个prev指针初始化为null,表示curr节点的前一个节点。
每一次我们反转curr和prev节点,也就是把curr.next指向prev,在这之前需要移动curr到下一个节点(所以需要next指针保存以前链表的curr的下一个节点),prev节点也移动到现在的curr节点的位置。
循环遍历直到curr为null