2012-03-17 85 views
0

有沒有辦法讓C#中的LinkedList指向多個子元素,而不僅僅是一個?即是否有辦法將其變成多路鏈接列表?C#多路鏈接列表

回答

2

您需要創建列表的列表:

LinkedList<LinkedList<int>> l = new LinkedList<LinkedList<int>>(); 

但是,這取決於你的具體問題。

如果你想擁有超過您要存儲,您應該創建自己的數據結構和存儲在列表中哪些更多的控制:

public class MyNodeData 
{ 
    public MyNodeData() 
    { 
     Children = new LinkedList<MyNodeData>(); 
    } 

    public MyNodeData(int i, string s) 
     : this() 
    { 
     MyInt = i; 
     MyString = s; 
    } 

    public int MyInt { get; set; } 
    public string MyString { get; set; } 

    public LinkedList<MyNodeData> Children { get; private set; } 
} 

這僅僅是一個樣品,你我定義的任何屬性任何類型的任何所需的名稱。
然後添加數據:

LinkedList<MyNodeData> l = new LinkedList<MyNodeData>(); 

    var d = new MyNodeData(); 
    d.MyInt = 10; 
    d.MyString = "Node message"; 
    d.Children.AddLast(new MyNodeData(11, "Child 1 message")); 
    d.Children.AddLast(new MyNodeData(12, "Child 2 message")); 
    l.AddLast(d); 

    Console.WriteLine(l.First.Value.MyString); 
    Console.WriteLine(l.First.Value.Children.Last.Value.MyInt); 
+0

感謝您的回覆。如果我使用這種方法,如果我只能存儲其子項列表,我將如何存儲「父」對象? – 2012-03-17 11:29:32

+0

換句話說,如果我有一個節點'1',並且我想存儲這個節點的ID,那麼如果我可以存儲的所有內容都是一個包含它的子節點的列表,我該怎麼做? – 2012-03-17 11:30:08

+0

嗯,這是一件新事物!所以你想要存儲除了孩子以外的一些數據。好。我修改答案來解決這個問題! – 2012-03-17 11:40:55