题目描述
输入一个链表,反转链表后,输出新链表的表头。
时间限制:1秒 空间限制:32768K 热度指数:531460
解题思路:这是一道完完全全的链表的反转题目,关于链表反转有多种方法:(1)使用三个指针逐个反转元素的指向; (2)将链表转换成数组,反转数组后重建链表;
(3)头插法重建链表,如下图所示,令newHead = Head;不断的往newHead头部插入元素,并更新newHead为插入后的新链表的头结点,依次下去得到反转后的链表:
代码如下:
public class Solution {
public ListNode ReverseList(ListNode head) {
if (head == null)
return null;
ListNode newHead = new ListNode(head.val);
ListNode temp = newHead;
newHead.next = null;
head = head.next;
while(head != null) {
newHead = new ListNode(head.val);
newHead.next = temp;
temp = newHead;
head = head.next;
}
return newHead;
}
}