連結串列反轉非遞迴演算法!看不懂打死我!

王小燊oom發表於2020-11-24

演算法使用三個指標實現,每次迴圈將反轉pre和head指向的節點

  1. pre:指向前一個節點,原頭節點的前一個節點(反轉後最後一個節點的下一個節點)為null,所以初始化pre=null
  2. head:指向當前節點,head為null時,迴圈結束
  3. next:儲存head的下一個節點,因為在調整head和pre之間的關係時,head.next=pre,所以原head.next需要存起來,不然下次迴圈就找不到了

在這裡插入圖片描述
上程式碼

public static Node reverse(Node head){
        Node pre = null;
        Node next = null;
        while (head != null) {
            next = head.next;
            head.next = pre;
            pre = head;
            head = next;
        }
        return pre;
    }

相關文章