注意:这看起来像一个家庭作业,否则将不需要重新发明轮子。知道这一点,我不会提供具体的代码,只是伪代码(除了像class
,int
等类似的关键字),没有有用的方法,如getters或setter,没有额外的字段等。这将是你的工作,以生成所有必要的Java代码,使其工作。
我不知道从哪里开始,我是新来的链表
开始通过定义会在列表里面的元素的结构。这个怎么做?检查的要求(emphasys矿):
构建数据结构在Java中与内部列表是由的单链接列表是包含整数
你需要一个数据起初可以容纳一个整数值并表现为单链表的结构。从the definition of singly linked list,该结构包含两个元素:
- 整数数据保持
- 的指针到下一个类似的数据结构。
这可以这样解决:
class DataStructure {
int data;
DataStructure next;
}
现在,你有一个支持单向链表的结构,你需要一个新的结构,这将是的单向链表和定义它的行为。这可以作为你的要求说来解决:
内部列表必须被实现为单链表与虚拟头和尾指针
移动到这个伪代码:
class SinglyLinkedList {
DataStructure head;
DataStructure tail;
}
就是这样。现在你有了你的SinglyLinkedList
,你只需要定义行为。同样,审查要求:
它需要有功能的方法内部类可以合并,分裂,并给大小内列出的。
从这里,我们可以定义为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() {
}
}
EDIT(根据您的修改,并通过看图片)
有需要界定持有单链表的列表中的其他数据结构。通过要求:
对于顶级名单,我必须使用通用LinkedList类从Java集合API。
然后,你只需要使用一个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;
}
任何代码这么远? –
不是因为我不知道从哪里开始,我是链接列表的新手。 –