2015-05-28 39 views
-1

我是java編碼新手,我希望你們能夠幫助:)Java反轉節點字符串列表

我正在努力實現的目標。

- > B->ç - > ...


A-> - 「ç - > ...

B-> A


A-> B->Ç - > ...

C-> B-> A

這裏是我的這個代碼,希望你們能夠幫我找出原因我不斷收到一個空的列表。

public StringList reverse(){ 

    Node cursor = head; 

    String temp; 
    while(cursor!=null){ 
     temp = cursor.getElement(); 
     head = new Node(temp,head); 
     cursor = cursor.getNext(); 

    } 

    return new StringList();} 

感謝您的答覆和答案,設法讓它工作:)繼承人未來引用其他人的代碼。

public StringList reverse(){ StringList newList = new StringList();

Node cursor = head; 

    String temp; 

    while(cursor!=null){ 
     temp = cursor.getElement(); 
     newList.head=new Node(temp,newList.head); 
     cursor = cursor.getNext(); 

    } 

    return newList;} 
+1

您正在函數的末尾返回一個新的StringList。 – gvmani

+0

缺少很多代碼? 「頭」從哪裏來?你對你的新「頭」不做任何事情,當然應該以某種方式回報。 –

+0

謝謝先生,但我怎麼能夠添加新的節點到新的字符串列表?如果我刪除新的StringList,返回值是什麼? – user1976307

回答

0

首先回答你的問題:你得到一個空列表,因爲這是new StringList()大概的回報。 (這很難確定,因爲您沒有向我們展示您的StringList類,它不是標準Java庫的一部分)。您的方法返回的值似乎沒有受到其前面的代碼的任何影響。再次,我不能肯定地說,因爲變量head不是本地的方法,所以它可以由StringList構造函數引用。你可能真的想通過一個StringList作爲方法參數,然後使用其值head值,而不是訪問外部範圍內的某個變量。那麼你的回報值應該是從head的最終值構建的StringList - 無法說明如何看到StringListNode

您的方法的主要代碼幾乎正確地顛倒了字符串值的鏈接列表。唯一的問題是你需要在cursor = head之後設置head = null。就目前而言,您最終會得到您的反向列表,然後是原始列表(例如C,B,A,A,B,C)。 (在明顯的方式假設你Node類的行爲。)

我假設這是一個賦值或學習鍛鍊,否則看到Java的標準List接口和它的實現,並Collections#reverse

+0

非常感謝你:) – user1976307

0

你錯過了很多東西。

首先,您要撤銷StringList,但您的reverse方法不會將一個參數作爲參數。

其次你使用了一個head變量(當然,如果我們知道StringList方法/屬性是什麼,StringList的頭部當然是StringList的頭部),而不用在任何地方進行初始化。

三,你創建一個節點(這裏又是如何定義一個Node?)但是從來沒有用過它。

最後你會返回一個空的StringList,這隻會幫助你有一個空的StringList無論你以前做過的奇妙計算。

你應該(假設我們有幾個信息):

  • 獲取的StringList作爲方法的參數
  • 創建一個新的StringList我們稱之爲resultList
  • 從列表中獲取頭,並創建一個新的節點
  • 以相反的順序
  • 將您的項目把你的新節點在resultList
  • 返回結果列表
+0

謝謝你的回答我會研究它:) – user1976307