最基础的反转链表
上代码
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode cur = head;
while(cur != null){
ListNode nextNode = cur.next;
cur.next = pre;
pre = cur;
cur = nextNode;
}
return pre;
}
}
题解呀
时隔一年再次写个最基础的链表算法,居然卡了一会儿,所以为了加深印象,再次学习一下,如何快速理解上面写法?
- 定义两个指针: pre 和 cur ;pre 在前 cur 在后。
- 最开始的时候pre=null (相当于没有),cur=head
- 每次让 cur 的 next 指向 pre ,实现一次局部反转
- 局部反转完成之后,pre 和 cur 同时往前移动一个位置,如何移动呢?
- prev = curr; //前面pre节点向右移动一下
- curr = next; //当前cur向右移动一下
- 循环上述过程,直至 pre 到达链表尾部,所以最后返回pre就行
举例子:1->2->3 变成 1<-2<-3
实在不会的时候记住
层层递进,最终回归
好用的话就点个赞吧!!!