美文网首页
25_反转链表

25_反转链表

作者: 是新来的啊强呀 | 来源:发表于2020-05-21 11:39 被阅读0次

    要求:输入一个链表,反转链表后,输出新链表的表头。

    思路:
      以a、b、c这3个节点为例:
      用pre记录当前节点的前一个节点
      用next记录当前节点的后一个节点
    1、当前节点a不为空,进入循环,pre指针指向空,先记录a的下一个节点位置next = b,再让a的指针指向pre。
    2、 移动pre和head的位置,正因为刚才记录了下一个节点的位置,所以该链表没有断,我们让head走向b的位置。
    3、当前节点为b不为空,先记录下一个节点的位置,让b指向pre的位置即a的位置,同时移动pre和head。
    4、当前节点c不为空,记录下一个节点的位置,让c指向b,同时移动pre和head,此时head为空,跳出,返回pre。

    public class L25_ReverseList {
        public static ListNode0 ReverseList(ListNode ListHead){
            ListNode reverseNode = null; // 用来保存反转节点
            ListNode pre = null;
            ListNode cur = ListHead;
            ListNode nex = null;
            // 从第一个开始循环
            while(cur!=null){
                nex = cur.next;
                if(nex == null){
                    reverseNode = cur;
                }
                cur.next = pre;
                pre = cur;
                cur = nex;
    
            }
            return reverseNode;
        }
    }
    

    相关文章

      网友评论

          本文标题:25_反转链表

          本文链接:https://www.haomeiwen.com/subject/gqvoohtx.html