Bom dia,
Estou fazendo um programa que usa busca em extensão, profundidade e melhor caminho (não sei se conhecem o caminho de Arad até Bucharest). Porém, como fiz as cadeiras de Java a 2 anos, estou totalmente enferrujado. De antemão já deixo claro que não quero a resposta do programa, pois se fosse isso, eu tenho dois código-fontes prontos que poderia entregar, sem precisar pedir auxílio para vocês. Porém, meu objetivo é aprender! Quero pedir auxílio para vocês na parte básica, que para vocês deve ser simples. O algoritmo a princípio acredito que consigo fazer. Estou com dificuldade no básico de como tratar métodos, objetos, classes e o tal do LinkedList.
Segue meu código até o momento.
[code]package buscas;
import java.util.*;
public class Buscas {
/**
* @param args
* http://www.caelum.com.br/apostila-java-estrutura-dados/filas/#7-8-api-do-java
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
Node a = new Node ("Arad", 366);
Node b = new Node("Bucharest", 0);
Node c = new Node("Craiova", 160);
Node d = new Node("Drobeta", 242);
Node e = new Node("Eforie", 161);
Node f = new Node("Fagaras", 176);
Node g = new Node("Giurgiu", 77);
Node h = new Node("Hirsova", 151);
Node i = new Node("Iasi", 226);
Node l = new Node("Lugoj", 244);
Node m = new Node("Mehadia", 241);
Node n = new Node("Neamt", 234);
Node o = new Node("Oradea", 380);
Node p = new Node("Pitesti", 100);
Node r = new Node("Rimnicu Vilcea", 193);
Node s = new Node("Sibiu", 253);
Node t = new Node("Timisoara", 329);
Node u = new Node("Urziceni", 80);
Node v = new Node("Vaslui", 199);
Node z = new Node("Zerind", 374);
a.setViz(s);a.setViz(t);a.setViz(z);
b.setViz(f);b.setViz(p);b.setViz(u);
c.setViz(d);c.setViz(p);c.setViz(r);
d.setViz(c);d.setViz(m);
e.setViz(h);
f.setViz(b);f.setViz(s);
g.setViz(b);
h.setViz(e);h.setViz(u);
i.setViz(n);i.setViz(v);
l.setViz(m);l.setViz(t);
m.setViz(d);m.setViz(l);
n.setViz(i);
o.setViz(s);o.setViz(z);
p.setViz(b);p.setViz(c);p.setViz(r);
r.setViz(c);r.setViz(p);r.setViz(s);
s.setViz(a);s.setViz(f);s.setViz(o);s.setViz(r);
t.setViz(a);t.setViz(l);
u.setViz(b);u.setViz(h);u.setViz(v);
v.setViz(i);v.setViz(u);
z.setViz(a);z.setViz(o);
String origem = a.cidade;
String destino = b.cidade;
}
}
class Node {
public String cidade;
public int dist;
//public boolean passou = false;
public Node (String cidade, int dist){
this.cidade = cidade;
this.dist = dist;
}
public static LinkedList viz = new LinkedList();
public void setViz(Node viz) {
this.viz.add(viz);
}
//public String getViz (String origem){
//}
}
class MetodosBusca {
public void BuscaProfundidade (String origem, String destino){
Queue<Node> fila = new LinkedList<>();
//fila.add
//fila.poll
if (!(origem == destino)){
// fila.add(Node.getViz(origem));
}
}
public void BuscaExtensao(){
Stack<Node> pilha = new Stack<>();
//pilha.add
//pilha.pop
}
public void BuscaMelhorCaminho(){
}
}[/code]
O que “não sei fazer” é chamar a LinkeList para começar inserir na pilha/fila. A minha ideia é pegar a origem e, a partir dela, inserir na minha fila seus vizinhos (que estão na LinkedList), para após fazer o algoritmos. Minha dúvida é como puxar essa LinkedList e inserir na fila apenas os vizinhos da minha origem. Procurei aqui no guj tópicos mas não achei algo que explica exatamente isso (acho que procurei errado ou talvez seja impossível).
Agradeço o auxílio.
Abraços