2012-03-17 4 views
0

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

ответ

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

Спасибо за ответ. Если я использую этот подход, как именно я буду хранить «родительский» объект, если я могу хранить только список его дочерних элементов? –

+0

Другими словами, если у меня есть Node '1', и я хочу сохранить идентификатор этого узла, как я могу это сделать, если все, что я могу сохранить, это список со своими дочерними элементами? –

+0

Ну, это новая вещь! Поэтому вы хотите сохранить некоторые данные в дополнение к детям. ОК. Я изменяю ответ, чтобы ответить на этот вопрос! –

2

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

Смежные вопросы