java中的链表



在"平面"链表结构中,每个对象都通过一个指针链接到下一个对象。

我正在寻找的是一种拥有一组节点的方法,并让它们以链表的方式互连。

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现在是不可能的。

有没有一种方法可以使数据结构类似于链表,即每个对象都可以包含指向其他节点的多个指针,而不是指向下一个对象,并且仍然是"列表"本身中的一个元素?

您要查找的是一个图结构。您可以尝试将key作为人名,将value作为他所有朋友的链表。

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

您可以在java中检查邻接列表的实现。

使用类似的树

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;
    }
}

相关内容

  • 没有找到相关文章

最新更新