Java 图的邻接表的实现

Java 图的邻接表的实现,java,graph,depth-first-search,Java,Graph,Depth First Search,我正在尝试实现一个非加权图的邻接列表和一些问题/关注点。我意识到我需要一个链表来存储边和一个数组来存储顶点。目前我有一个(基本)节点类和一个图形类,负责将边添加到特定顶点。但是,这并不明确定义边的链接列表。我想做一个DFS和BFS,想知道我该怎么做?我是否需要更改已经包含这些方法的代码,还是现在就需要更改。我们将不胜感激 // Inside the graph class public boolean insertNode(NodeRecord n) { int j;

我正在尝试实现一个非加权图的邻接列表和一些问题/关注点。我意识到我需要一个链表来存储边和一个数组来存储顶点。目前我有一个(基本)节点类和一个图形类,负责将边添加到特定顶点。但是,这并不明确定义边的链接列表。我想做一个DFS和BFS,想知道我该怎么做?我是否需要更改已经包含这些方法的代码,还是现在就需要更改。我们将不胜感激

 // Inside the graph class

  public boolean insertNode(NodeRecord n) {
    int j;

    if (isFull()) return false;
    for (j=0; j<arraySize; j++)
        if (node[j]==null)
            break;
    node[j] = new Node(n);
    graphSize++;
    return true;
}
public boolean insertEdge(int nodeID, EdgeRecord e) {
    int j;

    for (j=0; j<arraySize; j++)
        if (nodeID==((NodeRecord) node[j].item).getID())
            break;
    if (j>=arraySize) return false;
    node[j].next = new Node(e, node[j].next);
            return true;
}

 // inside the node class

    class Node<E> {
   E    item;
   Node<E> next;

Node(E e) {
        item = e;
        next = null;
}

Node(E e, Node<E> newNext) {
        item = e;
        next = newNext;
}

Node(Node<E> n) {  // copy constructor
        item = n.item;
        next = n.next;
 }

 }

   public static void depthFirst(){

    for(int i=0;i<mygraph.arraySize;i++){
        Node counter =mygraph.node[i];
        while(counter!=null){
         System.out.println(" " +counter.item);
         counter= counter.next;
       }

    }
}
//在graph类中
公共布尔插入节点(NodeRecord n){
int j;
如果(isFull())返回false;

对于(j=0;j关于代码的一些注释:

  • 使用固定大小的数组存储节点。请切换到在添加新节点时自动增长的arraylist

  • 我是否正确理解您可能只有一条边离开节点(
    next
    )?您还应该在此处使用列表

  • 只要图形没有定向,注意从A到B的边也从B到A,因此必须将其添加到节点A和节点B的边列表中


  • 输入是固定的,所以我不需要真正的arraylist。我理解你关于链表问题的观点,这是我在上面发布的问题之一。但是,我发现我可以使用一个简单的循环访问特定节点的所有边,所以我不需要真正的链表。代码解决了非定向问题。我的问题是如何对DFS和BF方法进行编码