题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
/*
public class ListNode {
int val;
ListNode next = null;
ListNode(int val) {
this.val = val;
}
}*/
public class Solution {
public ListNode ReverseList(ListNode head) {
//首先判断链表是否为空表
if(head==null ){
return head;
}
//如果不为空 保存链表结构{1,2,3} 获取前驱节点
ListNode pre=head;
//获取链表的当前前驱节点的指针后续节点{2,3}
ListNode current=head.next;
//真正获取前驱节点{1}
pre.next=null;
//循环判断后续节点是否为空
while(current!=null){
/*
first:
next=current.next--->{3}
current.next=pre;--->pre={1}--->执行完为:current={2,1} 因为将当前节点2的指针指向1
pre=currnt;--->{2,1}
current=next;-->{3}
second:
next=current.next;---->null
current.next=pre;----->pre={2,1}----->执行完为:current={3,2,1}
per=current;----->{3,2,1}
current=next;---->null
*/
ListNode next=current.next;
current.next=pre;
pre=current;
current=next;
}
return pre;
}
}
查看9道真题和解析