【问题标题】:Linked Lists and Constructors链表和构造函数
【发布时间】:2014-03-14 11:14:29
【问题描述】:

我遇到了一个使用多种类型的链接列表数据结构的大型源代码。例如,代码中使用的简单链表数据结构是使用 Link 类型的 nextLink 节点和初始化对象的构造函数。

public class Link {
    public int data1;
    public double data2;
    public Link nextLink;

    //Link constructor
    public Link(int d1, double d2) {
        data1 = d1;
        data2 = d2;
    }

    }

另一方面,另一段代码使用以下数据结构(双链表?):

public class ComplexLinkList {

    public static final int NEXT_BLOCK = Integer.MAX_VALUE;
    public static final int PREV_BLOCK = -1;

    //The var string holds the variable name 
    private String var;

    private int coverStart = PREV_BLOCK;

    private int coverEnd = NEXT_BLOCK;


   //Constructor ( copy Constructor ?)
    public ComplexLinkList(ComplexLinkList p) {
        this.var = p.var;
        this.coverEnd = p.coverEnd;
        this.coverStart = p.coverStart;

    }


 ----
 ----

}

构造函数采用 ComplexLinkList 类型的参数并初始化字段。两种实现之间的概念区别是什么?第二个究竟是一个链表吗?

【问题讨论】:

  • 第一个是单链表。第二个没有指向另一个元素的链接,因此它不是链表。有可能第二个是用来模拟双向链表,使用数组等另一种数据结构,但是没有办法知道。我建议使用 JDK 阅读源代码中的 LinkedList。

标签: java data-structures linked-list


【解决方案1】:

LinkedList 表示,有一些节点连接如下图。它可以单向或双向连接。您的第一个类具有成员变量 nextLink 以与下一个节点建立连接。但是第二个类没有办法与另一个节点链接。

对于双向链表,它有2个成员变量连接上一个节点和下一个节点。

【讨论】:

    【解决方案2】:

    第一个是专门的链表(非双链表),其中包含data1data2 作为卫星数据。第二个没有意义,但绝对不是链表。我认为你应该把该类中的所有代码都贴出来让我们知道它的功能。

    【讨论】:

    • 那应该是评论:)。
    • 感谢亚当!我在许多类中看到了类似的代码,我猜它是整个项目中使用的一种设计模式。猜猜它可能是什么?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-07-20
    • 1970-01-01
    • 1970-01-01
    • 2019-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多