单链表的反转

参考来源>

自己的理解

         Node cur = head.next;
         Node cur_next = null;
         Node reverseHead = new Node(0);//全新的空节点,用于存放反转的节点
         while(cur != null){//cur不为空即为遍历结束
             cur_next = cur.next;
             cur.next = reverseHead.next;//这里的rhead.next会把ur.next给占用了,因此需要提前保留cur.next到cur_next
             reverseHead.next = cur;
             cur = cur_next;
             System.out.println(reverseHead.toString());
//             System.out.println();
         }
         head.next = reverseHead.next;

假设链表为 1>2>3>4
(1)不算头结点,把第一个节点设置为当前节点,即为cur,此时的cur的next 是指向原链表(2,3,4),需要把这个指向关系给断掉,就让cur的next指向一个新建q为null,这个时候第一个节点和q就组成了新的链表,cur.next是null,就不是原链表(2,3,4)了,这个时候再把第一个节点(cur)与q(null)替换成q,作为下一阶段的q
(2)我们在把第一个节点给拎出来的时候,还需要把cur.next用中间变量给保存下来,不然就无法进行下一阶段==》cur_next = cur.next
(3)此时可以发现,这个单链表的逆是反着来构建的,先建尾部,在以此倒推,第一个元素已经和q组成了链表的最尾部,并让我们设置为q,再把保存的cur_next变为cur,让剩下的234,继续上诉123步骤。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值