单链表的反转(两种方法)

第一种方法:通过头插法反转单链表

    public ListNode reverse1(){
        ListNode cur=this.head.next;
        ListNode newHead=this.head;
        newHead.next=null;
        while(cur!=null){
            ListNode node=cur.next;
            cur.next=newHead;
            newHead=cur;
            cur=node;
        }
        return newHead;
    }
    

第二种方法:原地反转

    public ListNode reverse2(){
        ListNode prev=null;
        ListNode newHead=null;
        ListNode cur=this.head;
        while(cur!=null){
            ListNode curNext=cur.next;
            if(curNext==null){
                newHead=cur;
            }
            cur.next=prev;
            prev=cur;
            cur=curNext;
        }
        return newHead;
    }
发布了67 篇原创文章 · 获赞 12 · 访问量 1524

猜你喜欢

转载自blog.csdn.net/qq_42174669/article/details/102863941