我目前正在学习数据结构和算法,并想尝试实现一个图,但当我试图实现bfs与一些在线资源的帮助,但我卡住了,因为我无法采取我的int排队作为根。
我的图形代码:
public class DSAGraph {
int vertex;
public DSALinkedList lList[];
public DSAQueue queue;
//initialize a graph
//every single vertex create a new linked list hence for loop
public DSAGraph(int vertex)
{
this.vertex = vertex;
lList = new DSALinkedList[vertex];
for(int i = 0; i<vertex; i++)
{
lList[i] = new DSALinkedList();
}
}
//create edge link between nodes
public void addEdge(int start, int destination)
{
lList[start].insertFirst(destination);
lList[destination].insertFirst(start);
}
bfs公司:
public void BFS(int index)
{
boolean visited[] = new boolean[vertex];
int a = 0;
visited[index] = true;//mark true after visit
queue.enqueue(index); <-- return null pointer Exception
while(queue.size()!=0)
{
index = (int)queue.poll();
System.out.print(index);
}
for(int i =0; i<lList[index].size(); i++)
{
a = (int)lList[index].get(i);
if(!visited[a])
{
visited[a] = true;
queue.enqueue(a);
}
}
}
我的排队:
public void enqueue(Object data)
{
qList.insertLast(data);
counter ++;
}
在linkedlist中插入最后一个:
void insertLast(Object val)
{
Node newNode = new Node();
newNode.m_value = val;
if(isEmpty())
{
head = newNode;
}
else
{
tail.m_next = newNode;
newNode.m_prev = tail;
}
tail = newNode;
counter++;
}
主要内容:
public static void main(String[] args)
{
DSAGraph graph = new DSAGraph(4);
graph.addEdge(0, 1);
graph.addEdge(1, 2);
graph.addEdge(2, 3);
graph.BFS(0);
}
我是不是错过了什么或者误解了什么?提前感谢您的回复!
暂无答案!
目前还没有任何答案,快来回答吧!