0

「フラット」リンクリスト構造では、各オブジェクトは単一のポインタによって次のオブジェクトにリンクされます。

私が探しているのは、ノードのセットを作成し、それらをリンクリスト方式で相互接続できるようにする方法です。

class Person{
    public Person next;
    private String name;

    //Contructor method et. cetera. 
}

class List{
  private Person personlist, lastperson;
  private int counter;

  List(){
    Person lh = new Person("LISTHEADER");
    personListe = lh;
    sistePerson = lh;
  }
  //insert getters and setters ++.
}

他の例では、前のオブジェクトへのポインタも含めるのが自然です。しかし、リスト内のすべてのノードを相互接続する必要がある場合はどうなりますか?

私が3人のオブジェクトを持っているとしましょう。A、B、C、そして私はそれぞれの人の友達を含むリストを作りたいです。AがBとCの友達だとしましょう。BはAとCの友達です。CはAとAの友達です。

最初に述べたリンクリスト構造でこれを達成しようとすると、B-> A->CはAの次のポインタがCを指すため、C->A->Bは使用できなくなります。

リンクリストに似たデータ構造を作成する方法はありますか?各オブジェクトが次のオブジェクトを指す代わりに、各オブジェクトは他のノードへの複数のポインターを保持し、「リスト」自体の要素であり続けることができますか?

4

2 に答える 2

1

あなたが探しているのはグラフ構造です。キーを人の名前として、値を彼のすべての友人のリンクされたリストとして持つハッシュを試すことができます。

Example:
hash(A) contains B->C 
hash(B) contains C->A
hash(C) contains A->B

Javaで隣接リストの実装を確認できます。

于 2013-02-07T11:49:37.283 に答える
0

このようにツリーを使用する

public class Friends<Person> {
    private Friend<Person> self;

    public Friends(Person friendData) {
        self= new Friend<Person>();
        root.data = friendData;
        root.children = new ArrayList<Friend<Person>>();
    }

    public static class Friend<Person> {
        private Person info;
        private Friend<Person> parent;
        private List<Friend<Person>> children;
    }
}
于 2013-02-07T11:19:13.667 に答える