2011-03-14 54 views
1

我有鏈表這個Java分配。該問題要求從最後找到第n個節點。我已經測試過不同的投入,它的工作正常,但法官不接受我的解決方案。這裏是我的功能的Java分配

功能爲基準,以表頭和n這將永遠非負的值。

Node findNtoLast (Node start, int n) 
{ 
    Node p,q; 

    p = start; 

    for(int i=0;i<n;i++) 
    { 
     p = p.next; 
    } 

    q = start; 

    while(p.next != null) 
    { 
     p = p.next; 
     q = q.next; 
    } 

    return q; 
} 

樣品輸入:

甲 - >乙 - 「ç - > d

n  output 
0  D 
1  C 
2  B 
3  A 

能否請你想到什麼,這是錯誤的功能?

+0

試試你的功能與比'N'短名單。 – 2011-03-14 06:37:06

+0

@ Jon-如果列表的大小也是已知的,則工作更容易。 – Mahesh 2011-03-14 06:44:52

回答

5

我認爲你需要處理,其中輸入

n >= num of nodes 

您當前的功能會給一個NullPointerException這樣的輸入的情況下。

編輯:

您可以計算節點的數量並進行比較。或者你可以做一個檢查你的for環路:

for(int i=0;i<n;i++) { 

    // have I reached the last node ? 
    if (p.next != null) { 
     p = p.next; 
    } else { 
     // n happens to be >= num of nodes..return null 
     return null; 
    } 
} 
+0

你是對的人。我應該計算節點的數量並進行比較嗎? – Jon 2011-03-14 06:45:13

+0

@Jon:答覆已更新。 – codaddict 2011-03-14 06:49:16

+0

工作。非常感謝。 – Jon 2011-03-14 06:51:38