建立单一链接列表

时间:2013-09-24 21:15:15

标签: java data-structures

我正在尝试使用内部列表在Java中构建一个数据结构,该列表由包含整数的单个链接列表组成。我的数据结构体系结构遇到了问题。它需要一个内部类,其函数可以合并,拆分,并给出内部列表的大小。

假设内部列表的大小将发生变化,并且将删除大小和数据以合并和优化数据结构。

我有一个与数据结构接口的驱动程序类。然后我有一个Data结构类,它将具有内部类。

我在哪里添加/删除顶级列表的方法,因为单链表崩溃并扩展我的数据?

我应该有多少课?一个驱动程序,数据结构(内部类)...更多?

我只需要一个强大程序员的指导,我在自上而下的设计中多次尝试,我已经阅读并搜索过。我只需要一些方向。我附上了数据结构的外观和图像。

请注意:

内部列表必须实现为带有伪标头和尾部指针的单链表,并且我不得将Java Collections API中的任何数据结构用于内部列表。对于顶级列表,我必须使用Java Collections API中的通用LinkedList类。

1 个答案:

答案 0 :(得分:4)

注意:这看起来像是一个家庭作业,否则就没有必要重新发明轮子了。知道这一点,我不会提供特定的代码,只是伪代码(除了classint等类似的一些关键字),没有有用的方法,如getter或setter,没有其他字段等。它将成为您的工作,生成所有必要的Java代码,使其发挥作用。


  

我不知道从哪里开始,我是链接列表的新手

首先定义将进入列表内的元素的结构。这该怎么做?审查要求(强调我的):

  

在Java中构建数据结构,内部列表由单个链接列表组成,包含整数

您需要一种数据结构,该数据结构最初可以包含整数值,并且表现为单链表。从the definition of singly linked list开始,结构包含两个元素:

  1. 要保存的整数数据
  2. 指针指向下一个类似的数据结构。
  3. 这可以这样解决:

    class DataStructure {
        int data;
        DataStructure next;
    }
    

    既然您拥有支持单链表的结构,那么您需要一个新结构 单链表并定义它的行为。这可以按照您的要求说明:

      

    内部列表必须实现为带有虚拟标题尾部指针的单链表

    将其转换为伪代码:

    class SinglyLinkedList {
        DataStructure head;
        DataStructure tail;
    }
    

    就是这样。现在您已拥有SinglyLinkedList,您只需要定义行为即可。再次,审查要求:

      

    它需要有一个带有fstrongu̶n̶c̶t̶i̶o̶n̶s̶方法的内部类,可以合并拆分给出内部列表的大小。< / p>

    从这里开始,我们可以为SinglyLinkedList数据结构定义至少三种方法:mergesplitsize。改编最新的课程:

    class SinglyLinkedList {
        DataStructure head;
        DataStructure tail;
        //added this method just to know you need to add data to your singly linked list
        public void add(int data) {
        }
        //you merge a list with another list
        public void merge(SinglyLinkedList singlyLinkedList) {
        }
        //you split the list into two or more lists
        public SinglyLinkedList[] split() {
        }
        //the size of the list is a numeric positive value
        public int size() {
        }
    }
    

    编辑(根据您的编辑和查看图片)

    需要定义另一个包含单链表列表的数据结构。按要求:

      

    对于顶级列表,我必须使用Java Collections API中的通用LinkedList类

    然后,您只需要一个使用LinkedList的新结构,其中包含您的单链表:

    class SinglyLinkedListHolder {
        LinkedList<SinglyLinkedList> holder;
    
        public SinglyLinkedListHolder () {
            holder <- new LinkedList<SinglyLinkedList>();
        }
        //this holder should at least add new singlyLinkedList in the bigger list
        public void add(SinglyLinkedList singlyLinkedList) {
        }
    }
    

    注意:我注意到您尝试使用泛型定义结构:

    private static class Node<T> {
    }
    

    高度建议您不要这样做,直到您真正掌握有关单链表如何工作的主要概念。这可能需要一些时间,但最好一步一步走。在使这个结构起作用之后,您可以轻松(实际上,取决于您的实现)将结构替换为:

    class DataStructure<T> {
        T data;
        DataStructure next;
    }