题解 | #反转链表#
反转链表
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; } }