题解 | #反转链表#

反转链表

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;
}
    
}

全部评论

相关推荐

one_t:硕还是本?什么岗
点赞 评论 收藏
分享
一颗宏心:华为HR晚上过了十二点后还给我法消息。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务