2012-04-02 27 views
11

可能重複:
When should I use a List vs a LinkedList
What is a great resource for learning about the implementation details of .NET generic collections?是列表<T>鏈表?

System.Collections.Generic.List<T>一種類型的linked list(不是LinkedList<T>類)

鏈表是由一組一起代表一個序列節點中的數據結構。下的最簡單的形式中,每個節點是由一個基準和一個參考(換句話說,鏈接)到序列中的下一個節點的。

Linear Linked List
鏈表其節點包含兩個字段:一個整數值和到下一個節點的鏈路。
最後一個節點鏈接到用於表示列表末尾的終止符。

wikipedia.org

如果是,什麼樣的鏈表的是什麼呢?

+1

@Adrian Iftode:這個問題是不是問何時選擇'名單''以上LinkedList的'。 – BoltClock 2012-04-02 06:47:23

+0

@ BoltClock'saUnicorn,是的,我應該發佈此評論 – 2012-04-02 06:49:47

回答

23

不,List<T>支持一個數組 - 它基本上是來自.NET 1.0的通用版本ArrayList。從文檔:

List<T>類是ArrayList類的仿製藥。它使用一個大小根據需要動態增加的數組實現通用接口IList<T>

請注意,由於受到數組的支持,因此通過索引器訪問O(1)而不是鏈接列表的O(N)。

如果你想有一個鏈表,使用LinkedList<T>。請注意,這是一個 - 連接列表。我不相信.NET暴露了單獨 - 連接列表類型。

+1

你的意思是它在內存中像一個數組管理?但是,我怎樣才能在其中添加無限數量的對象呢?我可以從中刪除一件物品? – 2012-04-02 06:50:03

+2

@JohnIsaiahCarmona:我的意思是它內部有一個數組變量。該數組的大小是固定的(因爲* all *數組都在.NET中),但是當列表需要增長時,會創建一個新數組,並複製現有元素。同樣,當你刪除一個項目時,它只是將其餘的元素複製到他們新的正確位置。 – 2012-04-02 07:25:07

4

List<T>,從...技術角度來看,是不是一種鏈接列表。

如果你想在C#中的鏈表:

  • 既可以使用內置LinkedList<T>型(雙聯 列表)
  • 或創建自己的實現(如果你想 單鏈接之一) - here's an example