【牛客网-名企高频面试题】 NC78 反转链表

NC78 反转链表

题目描述
输入一个链表,反转链表后,输出新链表的表头。

示例1

输入

{1,2,3}

返回值

{3,2,1}

/*
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 || head.next==null)
            return head;
        //初始化pre指针,用于记录当前结点的前一个结点地址
        ListNode pre = null;
        //初始化p指针,用于记录当前结点的下一个结点地址
        ListNode p = null;
        //head指向null时,循环终止。
        while(head != null){
            //先用p指针记录当前结点的下一个结点地址。
            p = head.next;
            //让被当前结点与链表断开并指向前一个结点pre。
            head.next = pre;
            //pre指针指向当前结点
            pre = head;
            //head指向p(保存着原链表中head的下一个结点地址)
            head = p;
        }
        return pre;//当循环结束时,pre所指的就是反转链表的头结点
    }
}
posted @ 2020-12-22 21:08  your_棒棒糖  阅读(30)  评论(0编辑  收藏  举报