連結串列反轉方法詳解(含實現程式碼)
阿新 • • 發佈:2018-12-23
怎麼反轉連結串列呢?這個是面試中經常出現的一道題。一般在資料結構或者演算法的面試題中,儘量不使用額外的空間去實現,儘管現在的計算機空間很充足,但是面試考察的還是對於整體效能的考慮。
方法其實有很多,我們可以依次遍歷連結串列,然後依次使用頭插入的方法來達到目的。
其中有個簡單的方法,就是把連結串列的每個指標反轉。
下面就是通過反轉指標來實現反轉連結串列的程式碼。
這部分程式碼應該在 Link 類裡,通過反轉指標實現連結串列反轉。
接下來我們看看測試程式碼。
這樣可以輕鬆地完成連結串列反轉。
方法其實有很多,我們可以依次遍歷連結串列,然後依次使用頭插入的方法來達到目的。
其中有個簡單的方法,就是把連結串列的每個指標反轉。
下面就是通過反轉指標來實現反轉連結串列的程式碼。
public void reverse(){ Node temp = first; last = temp; Node next = first.getNext(); for(int i =0; i<size- 1;i++){ Node nextNext = next.getNext(); next.setNext(temp); temp = next; next = nextNext; } last.setNext(null); first = temp; }
接下來我們看看測試程式碼。
package me.irfen.algorithm.ch02.extend; import me.irfen.algorithm.ch02.Link; public class LinkReverseTest { public static void main(String[] args) { Link link = new Link(); link.addLast(1); link.addLast(2); link.addLast(3); link.addLast(4); printAllElements(link); link.reverse(); printAllElements(link); } private static void printAllElements(Link link) { for (int i = 0; i < link.size(); i++) { System.out.println(link.get(i).getData()); } } }