2017-02-02 6 views
1

Javaのリンクリストの他のすべての要素を削除しようとしています。リンクリストの他のすべての要素をスキップしますか?

public static IntNode everyOther(IntNode front){ 

    IntNode link = front; 

    if(link.next == null){ 
     return; 
    } 

    while(link.next != null){ 
     link.next = link.next.next; 
    } 
    return 
} 

私はこれまでこれを持っていましたが、実行しようとするとエラーが発生します。

+1

nullをlink.next.nextで確認してください。 – Peter

+1

リストに要素が2つしかない場合はどうなりますか?一般に、要素数が偶数の場合はどうなりますか? – Spidey

+0

@ PeterKuebler link.nextが最後の行であれば、それをnullに代入しませんか? –

答えて

0

おそらく、再帰を使用して通過して消去する方が理にかなっていますか?ノード自体を超えてすべてを編集している場合、なぜノードを返す必要があるのか​​分かりません。私の意見では、復帰は意味がないようです。

public static void everyOther(IntNode front){ 

    if(link.next == null){ 
     return; 
    } 
    IntNode link = front; 
    IntNode toErase = link.next; 

    if(toErase.next != null) 
    { 
     link.next = toErase.next; 
     everyOther(toErase.next); 
    } 
} 
関連する問題