C#多路链表



有没有办法让C#中的LinkedList指向多个子级,而不仅仅是一个子级?也就是说,有没有办法把它变成一个多路链表?

您需要创建列表列表:

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);

您所描述的要么是图,要么是树数据结构。我认为实现这一点最清晰的方法是创建自己的数据结构,比如节点。你可能想在这里阅读更多关于图表的信息:http://en.wikipedia.org/wiki/Graph_(abstract_data_type)。

相关内容

  • 没有找到相关文章

最新更新