注意:这看起来像一个家庭作业,否则就没有必要重新发明轮子了。知道了这一点,我不会提供具体的代码,只是伪代码(除了一些关键字,如class
,int
和类似的),没有有用的方法,如 getter 或 setter,没有额外的字段等。生成所有必要的 Java 代码将是你的工作使这项工作。
我不知道从哪里开始,我是链表的新手
首先定义将进入列表的元素的结构。这该怎么做?查看要求(强调我的):
在 Java 中使用内部列表构建数据结构,该内部列表由包含整数的单链表组成
您需要一个数据结构,它首先可以保存一个整数值并表现为单链表。从单链表的定义来看,结构包含两个元素:
- 要保存的整数数据
- 指向下一个相似数据结构的指针。
这可以这样解决:
class DataStructure {
int data;
DataStructure next;
}
现在你已经有了支持单链表的结构,你需要一个新的结构来作为单链表并定义它的行为。这可以按照您的要求中所述解决:
内部列表必须实现为具有虚拟头和尾指针的单链表
将其移动到伪代码中:
class SinglyLinkedList {
DataStructure head;
DataStructure tail;
}
就是这样。现在你有了你的SinglyLinkedList
,你只需要定义行为。再次,审查要求:
它需要有一个带有 f̶u̶n̶c̶t̶i̶o̶n̶s̶ 方法的内部类,可以合并、拆分和给出内部列表的大小。
SinglyLinkedList
从这里,我们可以为数据结构定义至少三个方法merge
:split
和size
。从中改编最新课程:
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 类。
然后,您只需要一个使用 a 的新结构,该结构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;
}