2014-03-14 108 views
0

我遇到了一個使用幾種類型的鏈接列表數據結構的大型源代碼。例如,代碼中使用的簡單鏈接列表數據結構使用鏈接類型的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的參數並初始化字段。兩種實現之間的概念區別是什麼?第二個完全是一個鏈表嗎?

+0

第一個是單鏈表。第二個沒有鏈接到另一個元素,所以它不是一個鏈表。第二個可能是使用另一個數據結構(如數組)來模擬雙向鏈表,但無法知道。我建議閱讀JDK源代碼中的LinkedList。 –

回答

0

第一個是一個專門的鏈接列表(不是雙向鏈接),其中包含data1data2作爲衛星數據。第二個沒有意義,但絕對不是鏈接列表。我認爲你應該發佈該類中的所有代碼,以便我們能夠說明它的功能。

+0

這應該是評論:)。 –

+0

謝謝Adam!我在許多課程中看到類似的代碼,我猜這是整個項目中使用的設計模式。任何猜測可能是什麼? – student

2

LinkedList意味着,有一些節點連接如下圖。它可以單向或雙向連接。你的第一個類有成員變量nextLink與下一個節點有連接。但第二類沒有辦法鏈接另一個節點。

對於雙向鏈表,它有2個成員變量用於連接前一個節點和下一個節點。

Linked-List flow