实现链表的翻转

实现链表的翻转

public class ListNodeReverse {
    //翻转链表
    //输入一个链表,翻转后输出所有链表所有元素

    //如何设计链表让后一个节点指向前一个节点


    //返回类型是一个节点类型        传入是一个节点类型   叫做head
    public listNodeRe ReverseList(listNodeRe head) {
        //传入了一个节点类型


        // 定义了两歌节点类型


        //翻转链表不如说是翻转箭头

                   /*curr*/
        listNodeRe next = null;

        listNodeRe pre = null;


        //当传入的节点不是空的时候一直执行下面循环
        while (head != null) {

            //记住是指针反向  不是数字反向

            //  next前进一位
            next = head.next;

            //让这个head指向空
            head.next = pre;

            pre = head;

            head = next;

        }
        return pre;
    }

    public static void main(String[] args) {
        listNodeRe a = new listNodeRe(1);
        listNodeRe b = new listNodeRe(2);
        listNodeRe c = new listNodeRe(3);
        listNodeRe d = new listNodeRe(4);
        listNodeRe e = new listNodeRe(5);

        a.next = b;
        b.next = c;
        c.next = d;
        d.next = e;
        ListNodeReverse l = new ListNodeReverse();
        l.ReverseList(a);


        while (e != null) {
            System.out.println(e.val);
            e = e.next;
        }
    }
}

总结:while循环中,你会发现他们围成一圈了, 为什么返回这个 return pre; 因为pre = head; 为什么这样输出, System.out.println(e.val); e = e.next;因为这样输出才能实现数字翻转。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值