给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:

输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:

输入:head = [1,2]
输出:[2,1]
示例 3:

输入:head = []
输出:[]

提示:

链表中节点的数目范围是 [0, 5000]
-5000 <= Node.val <= 5000

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
/**
* Definition for singly-linked list.
* public class ListNode {
* int val;
* ListNode next;
* ListNode() {}
* ListNode(int val) { this.val = val; }
* ListNode(int val, ListNode next) { this.val = val; this.next = next; }
* }
*/
class Solution {
public ListNode reverseList(ListNode head) {
//0, null
//1, [1][next]->[null]
//2, [2][next]->[1][next]->[null]
//3, [3][next]->[2][next]->[1][next]->[null]
//4, [4][next]->[3][next]->[2][next]->[1][next]->[null]
//5, [5][next]->[4][next]->[3][next]->[2][next]->[1][next]->[null]
ListNode restNode = null;
// 存放当前指针数据,用于循环遍历Node
ListNode curr = head;

while(curr != null){
// 先把下个指针拿出来
ListNode next = head.next;
// 把上次存储的数据设置到当前Node下个指针
curr.next = restNode;
// 上个操作的Node设置设置给循环外存储
restNode = curr;
// 把传入Node下个指针设置当前Node,进行循环
curr = next;
}
return restNode;

}
}

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。