题解 | #反转链表#
反转链表
https://www.nowcoder.com/practice/75e878df47f24fdc9dc3e400ec6058ca
import java.util.*; /* * public class ListNode { * int val; * ListNode next = null; * public ListNode(int val) { * this.val = val; * } * } */ public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param head ListNode类 * @return ListNode类 */ public ListNode ReverseList (ListNode head) { ListNode p=null; ListNode t=null; if(head!=null){ p=head.next; t=p; head.next=null; } while(head!=null&&t!=null){ t=t.next; p.next=head; head=p; p=t; } return head; // write code here } }
本质上就是创建一个点p和t,跟在点head后面,每次先把t后移,然后head与p的顺序反转,之后将head移到p处,p移到t处就搞定了,当然凡是出现了node.next语句都要加上node!=null的判断,最后返回原链表的最后一个点即现链路的第一个点head(此head早已通过循环变换不再是原链表的第一个点了)即可了。