2017-03-21 6 views
1

私はstudent referenceと次のリファレンスを保持するlinkListを作成しました。私は挿入に問題はありません。一方、私は削除とアイテムの検索に役立つ必要があります。ですから、基本的にfindメソッドを使用して、文字列の生徒参照を探しています。次に、deleteメソッドを使用して、その参照に対応するノードを削除します。リファレンスを検索してノードを削除します

public void deleteStudentNode(StudentNode delete) 
    { 
      StudentNode it = new StudentNode(); 
      delete = shead; 
      it = shead; 
      //StudentNode b = new StudentNode(); 

      while(it.getSptr() != findStudentByName(""))   
      { 
      delete = it; 
      it = it.getSptr(); 
      } 
      delete.setSptr(null);   
      setShead(delete); 
      //d.setStudent(null);     
    } 

    public StudentNode findStudentByName (String findName) 
    { 
      StudentNode find = shead; 

     while(find.getStudent().getName() != findName) 
     { 
     if(find.getSptr() == null) 

      return null; 

     else 

      find = find.getSptr();  
     } 
        return find; 
    } 
+1

唯一の問題かどうかは分かりませんが、 '=='の代わりに 'equals'を使って文字列を比較してください。[この回答](http://stackoverflow.com/questions/513832/) how-do-i-compare-strings-in-java/513839#513839)。 –

+0

@RobinKrahl申し訳ありませんが、あなたのコメントを正しく読まなかった。はい、文字列を比較するには 'equals'を使用する必要があります – esin88

+0

@ esin88。私はそれを理解していないことに気付く。その私を混乱させる – Qwanny

答えて

0

ワンリンクリストにはIterableインターフェイスを実装することをおすすめします。現在の要素のために、前のために:そのすべてを行う必要が

public void deleteByName(StudentList studentList, String nameToDelete) { 
    Iterator iterator = studentList.iterator(); 
    while (iterator.hasNext()) { 
     if(iterator.next().getName().equals(nameToDelete)) { 
      iterator.remove(); 
     } 
    } 
} 

ヒントされた後、1-リンクリストを反復処理するために、あなたは2ポインタを必要としています。

+0

あなたの答えをありがとう、それまでのようにive。唯一の問題は、このインターフェースを使用できないことです。私が持っている方法を厳密に使用しなければなりません。私はあなたが持っているイテレータを理解しています。 – Qwanny

+0

@Qwannyあなたはこれらの2つの方法を正確に使用しなければならないということですか? 'deleteStudentNode(StudentNode delete)'と 'findStudentByName(String findName)'? – esin88

+0

実際に問題なく動作しています。今私は別のものの中のリンクリストのためにしようとしている – Qwanny

関連する問題