2016-09-29 41 views
0

我正在練習Java中的LinkedList。我買了一本書,其中一個練習是使用單個鏈接列表創建學生目錄。該目錄可以存儲學生全名和gpa。從頭開始實施LinkedList方法

我需要實現和編寫方法removeFirst,removeLast,insertFirst,insertLast,getStudent等(通常內置在鏈表的迭代器中)的代碼。我不知道在哪裏創建這些自定義迭代器。目標是能夠在我的主體中創建一個類型爲StudentDirectory的鏈表,並且能夠使用我的自定義方法刪除,添加,獲取和生成鏈表中的學生列表。這使我相信所有這些方法都需要在我的StudentDirectory類中生存,但不幸的是我不知道如何開始。

我已經發布了我的代碼,但我將不勝感激在正確的方向。我不想要任何完整的解決方案,因爲我希望能夠獨自完成此操作,而不是複製其他人的代碼。我明白我需要通過通過在鏈表的節點來遍歷通過鏈表迭代,但我不知道節點如何/在哪裏申報領導

public class studentDirectory { 
    private String fullName; 
    private double gpa; 




    public studentDirectory(String name, double gpa){ 
     fullName = name; 
     this.gpa = gpa; 
    } 

    public void setGpa(double grade){ 
     gpa = grade; 
    } 

    public void setName(String name){ 
     fullName = name; 
    } 

    public double getGpa(){ 
     return gpa; 
    } 

    public String getName(){ 
     return fullName; 
    } 

    public void insertAtEnd(studentDirectory lastItem){ 


    } 

    public void insertAtStart(studentDirectory firstItem){ 

    } 

    public void getStudent(studentDirectory student){ 

    } 

    public void updateGpa(studentDirectory update){ 

    } 

    public void removeFirst(studentDirectory first){ 

    } 

    public void removeLast(studentDirectory last){ 

    } 

    public void generateStudentList(){ 

    } 
+1

我可能會開始* *創建一個'節點',它可能有一個'T'(或'可選')'value' **和**節點(或'可選>''''下一個''''。但是,這**實際上是「LinkedList」所需的最低限度。 –

回答

1

我覺得你在這裏混淆一​​些概念。列表應該是通用的,即它不應該知道它包含的數據類型。所以,你應該從列表本身最好通過使列表通用分開學生數據,:

public class LinkedList<T>{ 
    // your LinkedList needs nodes: 
    static class Node<T>{ 
     Node<T> next; 
     T value; 
    } 
    Node<T> rootNode; 
} 

public class Student{} 

現在你的學生通訊錄可以模擬成一個LinkedList<Student>

一些你列出有意義的方法LinkedList類(insertAtStart,insertAtEnd),而任何特定於學生的應該移動到Student類。

而且你LinkedList類還需要一個Node類

+0

所以應該在LinkedList 類中聲明removeLast,removeFirst等。無論哪種類型,我仍然對如何能夠搜索linkedlists節點感到困惑。我理解節點節點 - > if(node.next == null)做一些事情,但我想我對'下一個'是什麼感到困惑 – Chris

+0

@Chris我添加了一些節點代碼 –