【问题标题】:Implementing LinkedList methods from scratch从头开始实现 LinkedList 方法
【发布时间】:2016-09-29 01:11:05
【问题描述】:

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

我需要为 removeFirst、removeLast、insertFirst、insertLast、getStudent 等方法(通常内置在链表的迭代器中)实现和编写代码。我不知道在哪里创建这些自定义迭代器。目标是能够在我的 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(){

    }

【问题讨论】:

  • 我可能会开始创建一个Node<T>,它可能有一个T(或Optional<T>value一个Node<T>(或Optional<Node<T>>next。但这字面意思是“LinkedList”所需的最低要求。

标签: java singly-linked-list


【解决方案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&lt;Student&gt;

您列出的一些方法在 LinkedList 类中有意义(insertAtStart、insertAtEnd),而任何特定于学生的方法都应移至 Student 类。

你的 LinkedList 类也需要一个 Node 类

【讨论】:

  • 所以应该在 LinkedList 类中声明 removeLast、removeFirst 等。不管是哪个班级,我仍然对如何能够搜索链表节点感到困惑。我理解这个概念,即 Node node--> if(node.next == null) 做某事,但我想我对“下一个”是什么感到困惑
猜你喜欢
  • 2011-05-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-11
  • 2014-12-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多