题目:
分析:
本题的考查难度为需要反转链表,反转链表可以通过重新生成一个链表然后从头遍历并使用头插法完成,但那样需要创建一个新的链表,占用空间大,我们可以直接在原来的链表上进行这个操作,该操作最重要且最特点的就是新建了两个ListNode结点,为什么是两个呢,我在这篇博客中有所提及Java 链表的反转(图解)_yyswit的博客-CSDN博客
所以我们只需要在遍历这个链表的同时边遍历边进行反转即可,大大节省了空间
代码:
public ListNode reverseList(ListNode head) {
if(head==null||head.next==null){
//不变
}else {
ListNode link1 = null;
ListNode link2 = null;
while (head != null) {
link2 = head.next;
head.next = link1;
link1 = head;
head = link2;
}
head=link1;
}
return head;
}