2017-03-16 5 views
-3

私はプロジェクトをやろうとしていますが、リンクされたリストの特定のノードを見つけて削除する方法がわかりません。私の教授は、私たちがこれらの正確なクラスを使いたいと思っています。リンクリストから特定のノードを見つけて削除する方法はありますか。これらの特定のクラスを使用しているJava

public class StudentList { 

    private StudentNode shead ; 

    public StudentList(){} 
    public void setShead(StudentNode sh) 
    { 
     shead = sh; 
    } 

    public StudentNode getShead() 
    { 
     return shead; 
    } 
    public void deleteStudentNode(StudentNode s) 
    {  
    } 

    public StudentNode findStudentByName(String s) 
    { 
    } 
} 

次のクラスの

生徒のクラス

public class Student extends Person{ 

    private String major; 
    private double gpa; 
    public Student(){} 
} 

人クラス

public class Person { 
    private String name; 
    private String gender; 
    public Person(){} 
    public Person (String n, String g) 
    { 
     n = name; 
     g = gender; 
    } 
} 

EDITの-hereがある私はアクセサとミューテータメソッドのためのスペースを無駄にしません学生ノード

public class StudentNode { 
private Student student; 
private StudentNode sptr; 
private FriendList fptr; 

StudentNode() 
{ } 

public StudentNode(Student s) 
{ 
    s = student; 
}  

public void setStudent(Student s) 
{ 
    student = s; 
} 

public Student getStudent() 
{ 
    return(student); 
} 

public void setSptr(StudentNode s) 
{ 
    sptr = s; 
} 

public StudentNode getSptr() 
{ 
    return(sptr); 
} 
+0

あなたは自分で 'StudentNode'クラスを作成する必要がありますか?あなたはそれについて何か作業をしましたか? (と私たちを見せて!) –

+0

@StephenP私は今それを追加 – abc123

答えて

0

学生名の学生ノードを検索または削除する場合は、名前フィールドにアクセスする必要があります。あなたは、Personクラスのためのいくつかのgetter/setterメソッドを追加することができます。

public class Person { 
    private String name; 
    private String gender; 

    public Person() { 
    } 

    public Person(String n, String g) { 
     n = name; 
     g = gender; 
    } 

    public String getName() { 
     return name; 
    } 

    public void setName(String name) { 
     this.name = name; 
    } 
} 

[検索を実装し、次のように削除します。

public class StudentList { 

    private StudentNode shead; 

    public StudentList() { 
    } 

    public void setShead(StudentNode sh) { 
     shead = sh; 
    } 

    public StudentNode getShead() { 
     return shead; 
    } 


    private boolean isSameStudent(Student a, Student b) { 
     return a != null && b != null && a.getName().equals(b.getName()); 
    } 

    public void deleteStudentNode(StudentNode s) { 
     if (s == null) { 
      // Cannot delete a null node 
      return; 
     } 
     if (isSameStudent(s.getStudent(), shead.getStudent())) { 
      // If the node to delete is head 
      shead = shead.getSptr(); 
      return; 
     } 
     StudentNode ptr = shead; 

     while (ptr != null) { 
      if (ptr.getSptr() == null) { 
       // There is no node after ptr 
       return; 
      } 
      if (isSameStudent(ptr.getSptr().getStudent(), s.getStudent())) { 
       // The next node is the node to delete 
       ptr.setSptr(ptr.getSptr().getSptr()); 
       break; 
      } 
      ptr = ptr.getSptr(); 
     } 
    } 

    public StudentNode findStudentByName(String s) { 
     StudentNode ptr = getShead(); 
     while (ptr != null) { 
      if (ptr.getStudent().getName().equals(s)) { 
       return ptr; 
      } 
      ptr = ptr.getSptr(); 
     } 
     // not found 
     return null; 
    } 
} 

それはあなたを助けることができるホップ!

関連する問題