2016-06-23 12 views
0

単語頻度リストでノードを検索しようとしています。そうでなければnullを返します。私のメソッドはnullを返すだけで、私は理由を理解できませんでした!誰かが私が何かを見逃したら教えてもらえますかノードを見つけて挿入する

private class Node implements Comparable<Node>{ 
    private E key; 
    private int count; 
    private Node next; 

    Node(E item){ 
     key = item; 
     count = 1; 
     next = null; 
    } 
} 

private Node find(Node n){ 
    Node current = first; 

    while(current!=null && !current.equals(n)){ 
     current=current.next; 
    } 

    if(current!=null) 
     return current; 
    else 
     return null; 
} 
+3

を使用しています。例えば。どこから来ているのですか?どのように 'Node'sのリンクリストを構築/初期化していますか?私の直感は、あなたのリストを構築するとき、あなたは 'next'を設定しないかもしれないので、トラバーサルは実際に起こっていないということです。あなたはデバッガを使ってみましたか? – pyepye

答えて

0

@pyepyeはあなたが作成するすべてのノードに対してnullするNode nextを設定している、コメントで言ったように。 findメソッドを呼び出す場合は、事前にリンクリストを作成し、次のノードが実際の次のノードを指していることを確認する必要があります。

あなたのプログラムがnullを返す理由はおそらく、このエラーのためです。

EDIT:

別の可能なエラーがあなたがequalsメソッドを使用していることです。 Comparableインターフェイスには、メソッドが含まれており、equalsメソッドは含まれていません。おそらく、Nodeクラスのequalsメソッドが正しく機能しないため、findメソッドが実際に正しいノードを検出していない可能性があります。

だから、あなたはもう少しコードを提供する必要があります

while (current!=null && current.compareTo(n)!=0) 
関連する問題