单链表的反转

单链表的反转

这里我们采用的是只遍历一遍单链表实现反转

public void swap() {
        if(this.head==null){//首先判断单链表里面有没有节点
            System.out.println("单链表里面没有数字");
            return;
        }
        NODE prev = this.head;
        NODE cur = prev.next;
        if(cur!=null) {
            NODE del = cur.next;
            prev.next = null;
            while(cur!=null) {
                cur.next = prev;
                prev = cur;
                cur = del;
                if(del!=null) {
                    del = del.next;
                }
            }
            this.head = prev;
        }
        

    }

}

方法总结:
首先判断单链表是否为空,不为空的话,把头节点赋值给prev作为前驱,再把prev.next赋值给cur,让cur来进行反转,然后需要添加判断条件cur是否为空,为空的话代表只有一个节点,就不用继续执行下面的代码。不为空的话,把cur.next赋值给del。让del来控制cur和prev往后走。当cur为null的时候,代表全部反转完了。所以这个就是循环的退出条件。需要注意的是del变为null的时候,cur此时还不为null,还要再进入循环,此时需要添加条件del!=null,不然del会空指针异常。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值