反转链表--简单java实现 test1

题目:给定一个单链表的头结点pHead(该头节点是有值的,比如在下图,它的val是1),长度为n,反转该链表后,返回新链表的表头。

数据范围: 0leq nleq10000≤n≤1000 要求:空间复杂度 O(1)O(1) ,时间复杂度 O(n)O(n) 。 如当输入链表{1,2,3}时, 经反转后,原链表变为{3,2,1},所以对应的输出为{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){
            return null;
        }
        //获得头指针的值
        ListNode listNode=new ListNode(head.val);
        while(head.next!=null){
            head=head.next;
            ListNode listNode1=new ListNode(head.val);
            //将传入的链表顺序通过头插法插入新构造的链表中
            listNode1.next=listNode;
            listNode=listNode1;
        }
        return listNode;
    }
}
经验分享 程序员 微信小程序 职场和发展