2012-03-17 12 views
0

C#でLinkedListを複数の子を指すようにする方法はありますか?つまり、それをマルチウェイリンクリストにする方法はありますか?C#Multiway Linked List

答えて

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

返信ありがとうございます。私がこのアプローチを使用する場合、私はその子のリストしか保存できない場合、どのようにして 'parent'オブジェクトを保存するのですか? –

+0

つまり、ノード '1'を持っていて、このノードのIDを保存したいのですが、保存できるものがすべてその子ノードのリストであればどうすればいいですか? –

+0

さて、これは新しいことです!だから子供たちに加えていくつかのデータを保存したい。 OK。私はその答えに答えるために修正する! –

2

説明しているのは、グラフまたはツリーのデータ構造です。私はこれを実装する最も明白な方法は、ノードなどの独自のデータ構造を作成することだと思います。グラフの詳細は、http://en.wikipedia.org/wiki/Graph_(abstract_data_type)をご覧ください。