单链表反转之头插法

单链表反转之头插法

头插法的思想:

  1. 创建一个节点作为新的头节点。
  2. 遍历整个单向链表,每遍历到一个结点便把该结点移至新的头结点的下一个结点,直到到遍历结束。
  3. 将新的头节点再替换为源头结点。

下面上代码:

	//单链表反转
    public static void reverseLinkedList(SingleLinkedList list) {
    	//若链表长度为0或者为1则直接返回
        if (list.getHead().getNext() == null || list.getHead().getNext().getNext() == null) {
            return;
        }
        //创建新的头结点
        Node newHead = new Node();
        Node cur = list.getHead().getNext();
        Node next;
       	//当前结点为null时结束
        while (cur != null) {
        	//将指针先移至当前结点的下个结点,以便后面向后继续循环
            next = cur.getNext();
            //将新的头结点的下一个结点(即null)赋值给当前结点的下一个结点
            cur.setNext(newHead.getNext());
            //将当前节点赋值给新的头结点的下一个结点
            newHead.setNext(cur);
            //将当前节点向后移动
            cur = next;
        }
        //最后再将新结点替换为源结点
        list.getHead().setNext(newHead.getNext());
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值