2013-05-12 64 views
0

嗨,我想知道如何去顛倒單鏈表。從我到目前爲止看過的例子來看,反向方法的返回類型是無效的,我需要一個具有單鏈表(SLL)返回類型的類型。我有一個名爲Node的內部類來處理所有的節點引用。如何反向單鏈表 - Java

這是我到目前爲止有:

public SLL<E> reverse() { 
    Node<E> first = null; 
    Node<E> current = this; // produces compilation error 
    while (current != null) { 
     Node<E> save = current; 
     current = current.next; 
     save.next = first; 
     first = save; 
    } 
    return first; 
} 

我得到以下編譯錯誤:

錯誤:需要不兼容的類型 :myprog.SLL.Node 發現:myprog.SLL

我只是想知道如何在處理Node時返回類型爲SLL的列表。我也認爲我的迴歸聲明可能是錯誤的。

如果你需要更多的代碼來了解我的問題,只是問:)

提前感謝!

+2

本網站不是一個編碼服務。如果你想真正學到東西,就自己做作業。如果您遇到困難,*帶着您的代碼*,請回來尋求關於特定編碼問題的幫助。這個問題太廣泛了,坦率地說,我們可以做的最好的事情就是不回答。 – Bohemian 2013-05-12 01:00:30

回答

1

SLL應該是一個類,它的'head'或'first'指針指向列表中的第一個節點。

如果你註定要返回一個SLL,這大概是一個 SLL與節點,從原來的反向順序進行復制。

public SLL<E> reverse() { 
    SLL<E> result = new SLL<E>(); 

    // copy Nodes into new list, in reverse order. 
    // 
    Node<E> read = this.first; 
    while (read != null) { 
     // insert Copy, first; 
     Node<E> copy = new Node<E>(read.getItem()); 
     copy.next = result.first; 
     result.first = copy; 
     // advance 'Read Position'. 
     read = read.next; 
    } 

    // done. 
    return result; 
} 

如果你突變原SLL就地逆轉(還沒有檢查你的代碼是否工作,甚至爲),你不應該返回一個結果SLL只是作廢。

希望這會有所幫助。

+0

感謝您的幫助! – 2013-05-12 01:11:34