从头开始实现LinkedList方法

时间:2016-09-29 01:11:06

标签: java singly-linked-list

我在java中练习LinkedList。我买了一本书,其中一个练习是使用单个链接列表创建学生目录。该目录可以存储学生的全名和gpa。

我需要实现并编写removeFirst,removeLast,insertFirst,insertLast,getStudent等方法的代码(它们通常构建在linkedlist的迭代器中)。我不知道在哪里创建这些自定义迭代器。目标是能够在我的main中创建一个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 个答案:

答案 0 :(得分: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类