LC.206 反转单链表 解题笔记
作者:互联网
题目链接:
https://leetcode.cn/problems/reverse-linked-list/
笔记
想法
凡是涉及链表的题,最好画图后再做
本题是实现单链表的反转,比较简单。
要实现链表反转,我们可以将目的分解成
- 修改每一个节点的指针指向
- 将原本的首节点指向 Null ,原本的尾节点不再指向Null,而是指向上一个节点。
因此
假设现存链表为: 0 -->1 --> 2
需要一个变量先保存住 原本0节点的指向的1节点,而后再修改0节点的指向,来才能避免修改后1节点的丢失
做法
- 输入链表头结点 head
- 申请两个指针 pre 和 tmp, pre指针最初指向 null, tmp指针指向head节点的下一个节点
- while循环遍历链表
a. 遍历条件为 指针head 不为null
b. 记录当前节点head 的下一个节点tmp
c. 将head节点指向他的上一个节点pre
d. 先将pre节点后移至head
e. 再将head节点至tmp - 循环遍历后pre指针将停在链表的首节点
- 返回pre
代码
点击查看代码
class Solution {
public ListNode reverseList(ListNode head) {
ListNode pre = null;
ListNode tmp = null;
while(head != null){
tmp = head.next;
head.next = pre;
pre = head;
head = tmp;
}
return pre;
}
}
标签:pre,tmp,head,单链,指向,链表,解题,LC.206,节点 来源: https://www.cnblogs.com/JiShi2001/p/16265162.html