使用Arraylist添加顶点

时间:2013-11-24 22:02:26

标签: java graph arraylist

我正在尝试顶点到2个arraylist(setA,setB),我将在其中存储顶点。稍后我将使用BFS比较它们并找到Maximam尺寸(二分图)但我仍然坚持获得输入。

这是我到目前为止所拥有的

import java.util.*;



public class BipartiteGraph {

    private String strName;
    ArrayList<Vertex>[] vertexList;

    public BipartiteGraph(){

        vertexList = new ArrayList[2];
        vertexList[0] = new ArrayList<Vertex>();
        vertexList[1] = new ArrayList<Vertex>();
    }

    public boolean setA(Vertex v1){
        vertexList[0].add(v1);
        return false;
    }

    public boolean setB(Vertex v2){
        vertexList[1].add(v2);
        return false;
    }  
}

class Vertex{
    public String name;   
    public List adj; 
    public Vertex next; 
    public Vertex(String nm){
        name = nm;
        adj = new LinkedList();
      }
}

class Edge{
    public Vertex vertA;   
    public Vertex vertB;  
    public Edge( Vertex destination, Vertex comesfrom ){
        vertA = comesfrom;
        vertB = destination;
    }

    public static void main(String[] args){
      Scanner vertexInput = new Scanner(System.in);
      BipartiteGraph g = new BipartiteGraph( );
      g.setA(vertexInput.nextBoolean()); <-- I get the error here and to resolve it I tried new Vertex(.....) but that did not work as well
    } 
}

如何正确输入输入以便我可以延迟执行BFS搜索。我还需要使用邻接列表。我可以在以后的当前代码中使用它吗?

1 个答案:

答案 0 :(得分:0)

g.setA(vertexInput.nextBoolean());

您尝试使用boolean类型的参数调用方法setA(Vertex v1),因为Scanner.nextBoolean()返回布尔值(顾名思义)。

即使您尝试将此方法称为

g.setA(new Vertex(String));

然后你仍然不能使用nextBoolean(),因为Vertex构造函数只接受String参数。尝试使用g.setA(new Vertex(vertexInput.nextLine()));