在“平面”链表结构中,每个对象通过单个指针链接到下一个对象。
我正在寻找的是一种拥有一组节点的方法,并让它们以链表方式互连。
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现在不可能。
有没有办法使数据结构类似于链表,而不是让每个对象指向下一个对象,每个对象都可以保存多个指向其他节点的指针,仍然是“列表”中的元素本身?
答案 0 :(得分:1)
您正在寻找的是图形结构。您可以尝试使用密钥作为人名和值作为所有朋友的链接列表。
Example:
hash(A) contains B->C
hash(B) contains C->A
hash(C) contains A->B
您可以在java中检查邻接列表实现。
答案 1 :(得分: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;
}
}