2016-03-26 14 views
0

Öğrencilerin bağlantılı bir listesini uygulayan bir program yazmalıyım, bu durumda Öğrenci, çağrılacak ayrı bir sınıftır. Bağlantılı Listemin o öğrencinin adını kullanarak bir öğrenci bulabilmesi gerekiyordu ve bu da programımın başarısız olduğu alanın o öğrenci için o düğümü bulamıyor gibi görünmüyor, dolayısıyla silinmeyecek. Bunu bir sınıf için yazıyorum ve profesör Bağlantılı Liste sınıfında kullanılmasına izin vermiyor.java'da bu bağlantılı listeden bir Düğüm Bulma ve Silme

Bu Bu Düğüm

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; 
     } 
} 

cevap

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

if(iterator.getnext().equals(data)){ // < olan My Kod

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(); 
      } 
     } 
} 

olduğunu - Burada da, sen equals yöntem geçersiz kılınan sığınak beri .. referanslar comparaed edilecektir

Ayrıca, seni görmüyorum c find yöntemi

StudentNode'da, Student nesnesini karşılaştırabileceğiniz ve bunların eşit olup olmadığını kontrol edebileceğiniz eşittir yöntemini geçersiz kılmalısınız.

İlgili konular