2012-03-17 117 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