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 ++.
}

在其他情况下,也很自然地包含指向前一个对象的指针。但是如果列表中的所有节点都需要相互连接怎么办?

假设我有三个人对象;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 回答