题解 | #反转链表#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#
全部评论

相关推荐

酷酷的喜马拉雅山:感觉这比一直在初筛不动的好多了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务