2016-03-26 16 views
0

私は、Studentsのリンクリストを実装するプログラムを書く必要があります。この場合、Studentは呼び出される別のクラスです。私のリンクされたリストは、その学生の名前を使用して学生を見つけることができるはずですが、これは私のプログラムが失敗するエリアで、その学生のノードを見つけられないようです。私はクラスのためにこれを書いており、教授は組み込みのLinked Listクラスの使用を許可していません。javaのこのリンクリストからノードを見つけて削除する

これはこれは、ノード

public class StudentNode{ 

     private Student data; 
     private StudentNode next; 

     public StudentNode(){ 

      data = null; 
      next = null; 
     } 

     public StudentNode(Student data){ 

      this.data = data; 
      next = null; 
     } 

     public Student getStudent(){ 

      return data; 
     } 

     public void setStudent(Student data){ 

      this.data = data; 
     } 

     public StudentNode getnext(){ 

      return next; 
     } 

     public void setnext(StudentNode next){ 

      this.next = next; 
     } 
} 

答えて

0
`if(iterator == data){` // <-- It just checks for same reference 
       head = iterator.getnext(); 
     } 

if(iterator.getnext().equals(data)){ // <あるマイコード

public class StudentList { 

    StudentNode head; 

    public StudentList() { 

     shead = null; 
    } 

    public void setShead(StudentNode data) { 

     shead = data; 
    } 

    public StudentNode getShead() { 

     return shead; 
    } 

    public void insert(StudentNode data) { 

     StudentNode iterator = head; 

     if (iterator == null) { 
      head = data; 

     } else { 
      while (iterator.getnext() != null) { 
       iterator = iterator.getnext(); 

      } 

      iterator.setnext(data); 
     } 
    } 

    public void delete(StudentNode data) { 

     StudentNode iterator = head; 
     StudentNode current; 

     if (iterator == data) { 
      head = iterator.getnext(); 
     } else { 
      while (iterator.getnext() != null) { 
       if (iterator.getnext().equals(data)) { 
        // current 
        iterator.setnext(iterator.getnext().getnext()); 
        // current.setSptr(iterator.getnext()); 
        break; 
       } else { 
        iterator = iterator.getSptr(); 
       } 
      } 
     } 
    } 

    public StudentNode find(String n) { 

     StudentNode iterator = head; 
     StudentNode result = null; 

     while (iterator.getnext() != null) { 

      if (iterator.getStudent().getName().equals(n)) { 
       result = iterator; 
       System.out.println("" + iterator.getStudent().getName()); 
      } else { 
       result = null; 
      } 
      iterator = iterator.getnext(); 
     } 
     return result; 
    } 

    public void print(){ 

      StudentNode iterator = head; 

      while(iterator != null){ 
        JOptionPane.showMessageDialog(null,""+ iterator.getStudent().getName()); 
        iterator = iterator.getnext(); 
      } 
     } 
} 

である - ここでまた、あなたがequalsメソッドオーバーライドされたhaventは以来...参照がcomparaedされます

また、私はあなたを見ませんc alling findメソッド

StudentNodeでequalsメソッドをオーバーライドして、Studentオブジェクトを比較し、等しいかどうかを確認する必要があります。

関連する問題