Senhores,
Vocês poderiam me fornecer uma consultoria?
Estou tentando implementar o algoritmo busca em largura,mas me deparei com um erro,java.lang.NullPointerException,
me informando que estou apontando para um objeto que não existe.Veja minha implementação:
public void buscaLargura(Vertice inicial) {
LinkedList<Vertice> visitados = new LinkedList<Vertice>();
//java exigiu que inicializasse a fila.
Queue<Vertice> paraVisitar = null;
//adiciono meu vertice inicial a fila
paraVisitar.offer(inicial);
while (!paraVisitar.isEmpty()) {
Vertice v = paraVisitar.poll();
paraVisitar.offer(v);
if (!visitados.contains(v)) {
System.out.println(v.getNome());
visitados.add(v);
}
for (Aresta a : v.getArestas()) {
//a.getDestino() retorna um vértice
paraVisitar.offer(a.getDestino());
}
}
}
O problema que ele aponta é na linha 6.
Para ver se havia algum problema com as minhas classes vertice e aresta, resolvi implementar uma classe elemento e uma classe fila para substituir o Queue do Java.Após testar a fila que criei,o algoritmo busca em largura funcionou…
public void buscaLargura(Vertice inicial) {
LinkedList<Vertice> visitados = new LinkedList<Vertice>();
Fila paraVisitar = new Fila();
paraVisitar.add(inicial);
while (!paraVisitar.isEmpty()) {
Vertice v = paraVisitar.rmv();
if (!visitados.contains(v)) {
System.out.println(v.getNome());
visitados.add(v);
}
for (Aresta a : v.getArestas()) {
paraVisitar.add(a.getDestino());
}
}
}
Alguém de vocês possue um bom material relativo aos métodos que o Queue possui para que eu possa dar uma estudada?
Desde já agradeço.
[quote=Jemerson]Senhores,
Vocês poderiam me fornecer uma consultoria?
Estou tentando implementar o algoritmo busca em largura,mas me deparei com um erro,java.lang.NullPointerException,
me informando que estou apontando para um objeto que não existe.Veja minha implementação:
public void buscaLargura(Vertice inicial) {
LinkedList<Vertice> visitados = new LinkedList<Vertice>();
//java exigiu que inicializasse a fila.
Queue<Vertice> paraVisitar = null;
//adiciono meu vertice inicial a fila
paraVisitar.offer(inicial);
while (!paraVisitar.isEmpty()) {
Vertice v = paraVisitar.poll();
paraVisitar.offer(v);
if (!visitados.contains(v)) {
System.out.println(v.getNome());
visitados.add(v);
}
for (Aresta a : v.getArestas()) {
//a.getDestino() retorna um vértice
paraVisitar.offer(a.getDestino());
}
}
}
O problema que ele aponta é na linha 6.
Para ver se havia algum problema com as minhas classes vertice e aresta, resolvi implementar uma classe elemento e uma classe fila para substituir o Queue do Java.Após testar a fila que criei,o algoritmo busca em largura funcionou…
public void buscaLargura(Vertice inicial) {
LinkedList<Vertice> visitados = new LinkedList<Vertice>();
Fila paraVisitar = new Fila();
paraVisitar.add(inicial);
while (!paraVisitar.isEmpty()) {
Vertice v = paraVisitar.rmv();
if (!visitados.contains(v)) {
System.out.println(v.getNome());
visitados.add(v);
}
for (Aresta a : v.getArestas()) {
paraVisitar.add(a.getDestino());
}
}
}
Alguém de vocês possue um bom material relativo aos métodos que o Queue possui para que eu possa dar uma estudada?
Desde já agradeço.
[/quote]
A queue que você criou na linha anterior está inicializada com null, por isso deu null pointer…
quanto a como usar, Queue é uma interface, as classes mais conhecidas que a implementam são PriorityQueue e LinkedList. Basicamente uma fila, os seus métodos mais usados são o peek e o pool… da uma googlada, usa a doc que o amigo acima linkou…
Obrigado pela ajuda senhores…
Modifiquei a inialização da Queue e funcionou.
[code]
public void buscaLargura(Vertice inicial) {
Queue paraVisitar = new LinkedList();
paraVisitar.offer(inicial);
while (!paraVisitar.isEmpty()) {
Vertice v = paraVisitar.poll();
paraVisitar.offer(v);
if (!visitados.contains(v)) {
System.out.println(v.getNome());
visitados.add(v);
}
for (Aresta a : v.getArestas()) {
paraVisitar.offer(a.getDestino());
}
}
}[/code]
Abraços.