2011-03-14 16 views
1

私はリンクされたリストにこのJavaの割り当てを持っています。最後のノードからn番目のノードを探します。私はさまざまな入力のためにそれをテストし、それは正常に動作しますが、裁判官は私の解決策を受け入れていません。ここに私の関数です。Javaの割り当て

この関数は、リストのheadと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; 
} 

サンプル入力:

A - > B - > C - > D

n  output 
0  D 
1  C 
2  B 
3  A 

あなたは、関数で間違って何も考えていただけますか?

+0

「n」より短いリストで機能を試してみてください。 –

+0

@ Jon-リストのサイズも分かっていれば、仕事は簡単です。 – Mahesh

答えて

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

+0

@Jon:回答が更新されました。 – codaddict

+0

それはうまくいった。どうもありがとう。 – Jon