有没有办法让C#中的链接列表指向多个子节点,而不只是一个?即有没有办法将其变成多向链接列表?
答案 0 :(得分:2)
您所描述的是图形或树形数据结构。我认为实现这一点的最明确的方法是创建自己的数据结构,例如节点。您可以在此处阅读有关图表的更多信息:http://en.wikipedia.org/wiki/Graph_(abstract_data_type)。
答案 1 :(得分: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);