C # Multiway Linked List - PullRequest
       15

C # Multiway Linked List

0 голосов
/ 17 марта 2012

Есть ли способ сделать LinkedList в C # указывать на несколько детей, а не только на одного?т.е. есть ли способ превратить его в многоканальный связанный список?

Ответы [ 2 ]

2 голосов
/ 17 марта 2012

Вам необходимо создать список списков:

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);
2 голосов
/ 17 марта 2012

То, что вы описываете, представляет собой граф или древовидную структуру данных. Я думаю, что самый простой способ реализовать это - создать собственную структуру данных, например, узел. Вы можете прочитать больше на графиках здесь: http://en.wikipedia.org/wiki/Graph_(abstract_data_type).

...