bin*_*mer 1 java data-structures
我正在尝试用 Java 构建一个数据结构,其内部列表由包含整数的单链接列表组成。我的数据结构架构遇到问题。它需要有一个具有可以合并、拆分和给出内部列表大小的函数的内部类。
假设内部列表的大小将发生变化,并且将删除大小和数据以巩固和优化数据结构。
我有一个与数据结构交互的驱动程序类。然后我有一个数据结构类,它将具有内部类。
当单链表随着我的数据折叠和扩展时,我应该在哪里放置添加/删除顶级列表的方法?
我应该上多少节课?驱动程序、数据结构(带有内部类)...更多?
我只需要来自一位强大的编码人员的一点指导,我在自上而下的设计中进行了多次尝试,并且我已经阅读和搜索了。我只需要一些指导。我附上了数据结构的图像。
请注意:
内部列表必须实现为具有虚拟标头和尾指针的单链表,并且我不得将 Java Collections API 中的任何数据结构用于内部列表。对于顶级列表,我必须使用 Java Collections API 中的通用 LinkedList 类。
注意:这看起来像是一项作业,否则就没有必要重新发明轮子了。知道了这一点,我不会提供具体的代码,只是伪代码(除了一些关键字,如class、int和类似的),没有像 getter 或 setter 这样有用的方法,没有额外的字段等。生成所有必要的 Java 将是你的工作代码来完成这项工作。
\n\n\n我不知道从哪里开始,我是链表新手
\n
首先定义列表中元素的结构。这个怎么做?查看要求(强调我的要求):
\n\n\n\n\n在 Java 中构建一个具有内部列表的数据结构,该内部列表由包含整数的单链接列表组成
\n
您需要一个首先可以保存整数值并表现为单链表的数据结构。从单链表的定义来看,该结构体包含两个元素:
\n\n这可以这样解决:
\n\nclass DataStructure {\n int data;\n DataStructure next;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n现在您已经有了支持单链表的结构,您需要一个新的结构来作为单链表并定义它的行为。这可以按照您的要求中所述来解决:
\n\n\n\n\n内部列表必须实现为具有虚拟头和尾指针的单链表
\n
将其转换为伪代码:
\n\nclass SinglyLinkedList {\n DataStructure head;\n DataStructure tail;\n}\nRun Code Online (Sandbox Code Playgroud)\n\n就是这样。现在您已经有了SinglyLinkedList,您只需要定义行为即可。再次回顾一下要求:
\n\n\n它需要有一个内部类,其中包含可以合并的 f\xcc\xb6u\xcc\xb6n\xcc\xb6c\xcc\xb6t\xcc\xb6i\xcc\xb6o\xcc\xb6n\xcc\xb6s\xcc\xb6 方法,split,并给出内部列表的大小。
\n
从这里,我们可以为数据结构定义至少三种方法SinglyLinkedList:merge、split和size。从中改编最新的课程:
class SinglyLinkedList {\n DataStructure head;\n DataStructure tail;\n //added this method just to know you need to add data to your singly linked list\n public void add(int data) {\n }\n //you merge a list with another list\n public void merge(SinglyLinkedList singlyLinkedList) {\n }\n //you split the list into two or more lists\n public SinglyLinkedList[] split() {\n }\n //the size of the list is a numeric positive value\n public int size() {\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n编辑(根据您的编辑和查看图片)
\n\n需要定义另一个数据结构来保存单链表的列表。按要求:
\n\n\n\n\n对于顶级列表,我必须使用Java Collections API 中的通用 LinkedList 类。
\n
然后,您只需要一个使用LinkedList包含单链表的新结构:
class SinglyLinkedListHolder {\n LinkedList<SinglyLinkedList> holder;\n\n public SinglyLinkedListHolder () {\n holder <- new LinkedList<SinglyLinkedList>();\n }\n //this holder should at least add new singlyLinkedList in the bigger list\n public void add(SinglyLinkedList singlyLinkedList) {\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\n注意:我注意到您尝试使用泛型定义结构:
\n\nprivate static class Node<T> {\n}\nRun Code Online (Sandbox Code Playgroud)\n\n我强烈建议您在真正掌握单链表如何工作的主要概念之前不要这样做。这可能需要一些时间,但最好一步一步来。使该结构正常工作后,您可以轻松(实际上,取决于您的实现)将该结构替换为:
\n\nclass DataStructure<T> {\n T data;\n DataStructure next;\n}\nRun Code Online (Sandbox Code Playgroud)\n