题解 | #反转链表#java
反转链表
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) { // write code here //首先定义前置结点指向为空,头结点指向形参中的头结点head ListNode pre = null; ListNode pHead=head; //使用while循环判断头结点是否指向空,当头结点的指针域指空时循环结束 //此时链表中的pHead指向末尾结点,链表遍历结束 while( pHead != null ){ //将temp指针变量指向pHead.next(头结点的下一个结点),此时pHead.next=null ListNode temp = pHead.next; //将pHead.next(头结点的下一个结点的指针域)指向前置结点pre,此时pHead.next结点为前置结点 //实现顺序反转 pHead.next=pre; //再将pHead结点和pHead.next结点的指针以此指向后一个结点 pre = pHead; pHead = temp; //此时pHead.next结点已经被temp结点所替代,而pHead.next结点反转后变成了pre前置结点 } //循环结束后链表内的结点实现全部反转,此时返回前置结点即可 return pre; } }#反转链表java#