题目描述
给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。
样例
输入: head = [1,2,3,4,5]
输出: [5,4,3,2,1]
输入: head = [1,2]
输出: [2,1]
输入: head = []
输出: []
算法1
(头插法)
使用头插法来解决此问题。
定义一个虚拟头结点 res,用来保存返回结果,然后遍历 head,每遍历到一个结点,就将其插入到 res的下一个结点,依次类推,知道 head 为空,最后返回 res.next.
Java 代码
class Solution {
public ListNode reverseList(ListNode head) {
// 头插法实现
ListNode res = new ListNode(-1);
while(head != null) {
ListNode p = head;
head = head.next;
p.next = res.next;
res.next = p;
}
return res.next;
}
}