美文网首页
【算法】链表翻转的两种写法

【算法】链表翻转的两种写法

作者: 王月亮17 | 来源:发表于2024-04-01 19:38 被阅读0次

    初始化

    ListNode listNode5 = new ListNode(5, null);
    ListNode listNode4 = new ListNode(4, listNode5);
    ListNode listNode3 = new ListNode(3, listNode4);
    ListNode listNode2 = new ListNode(2, listNode3);
    ListNode listNode1 = new ListNode(1, listNode2);
    doReverse(listNode1);
    

    遍历

    private static ListNode doReverse(ListNode head) {
        ListNode prev = null, next;
        while (head != null) {
            next = head.next;
            head.next = prev;
            prev = head;
            head = next;
        }
        return prev;
    }
    

    递归

    private static ListNode doReverse(ListNode head) {
        if (head == null || head.next == null) {
            return head;
        }
        ListNode newHead = doReverse(head.next);
        head.next.next = head;
        head.next = null;
        return newHead;
    }
    

    相关文章

      网友评论

          本文标题:【算法】链表翻转的两种写法

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