gpt4 book ai didi

java - 使用树集中的元素初始化链表

转载 作者:行者123 更新时间:2023-12-02 04:17:50 25 4
gpt4 key购买 nike

问题是这样的:定义一个构造函数,该构造函数采用 TreeSet 作为参数,并使用集合中的元素初始化一个链表。新列表必须按字典顺序升序排序。

此方法将使用以下类来实现:

public class LinkedList<T extends Comparable<T>> {
private class Node{
private T data;
private Node next;

private Node(T data){
this.data = data;
next = null;
}

}

private Node head;

public LinkedList(){
head = null;
}

现在我知道 TreeSet 本质上是排序的,所以我在这里真正需要做的就是从 TreeSet 中取出元素并将其放在该链接列表的前面。但我无法从集合中检索元素并将其添加到 LinkedList 中。我编写了一个私有(private)帮助器 add(T data) 方法并正在使用它,但我不知道这是否是我应该处理它的方式。我对数据结构很陌生,所以对集合及其实现知之甚少。

public class LinkedList<T extends Comparable<T>> {
private class Node{
private T data;
private Node next;

private Node(T data){
this.data = data;
next = null;
}

}

private Node head;

public LinkedList(){
head = null;
}

public void add(T data){
Node n = new Node(data);
if(head == null){
head = n;
}
else{
n.next = head;
head = n;
}
}

public LinkedList(TreeSet<T> test){
Iterator<T> itr = test.iterator();
while(itr.hasNext()){
this.add(itr.next());
}
}

最佳答案

您需要解决的主要问题是您需要将每个项目添加到列表的末尾而不是开头。

将节点添加到列表的开头很容易:

public void addToHead(T data) {
Node node = new Node(data);
node.next = head;
head = node;
}

添加到末尾比较困难,因为您没有对尾部的引用。但解决方案相当简单:在您正在开发的构造函数中,保留对列表尾部的引用,以便您可以在链接的末尾而不是开头添加每个值。

关于java - 使用树集中的元素初始化链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33117545/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com