Erro no Método de Inserir, Algoritmo de java para manipular Grafos
Ola pessoa do forum, estou com um grande problema no meu programa de java, preciso criar uma maneira de armazenar Vertices e Arestas, irei explicar certinho o que acontece, para ver se voces podem me ajudar a encontrar meu problema.
Primeiro criamos um vértice na classe menu (uma classe de testes)
99 v = grafo.addVertice("vertice s0", 0); //vertice é criado com o nome vertice s0 e codigo 0 (id)
100 grafo.setVertice_na_ListaVertice(v); //envia o vértice para uma lista duplamente encadeada
La na classe GrafoNo onde deveria ficar as listas duplamente encadas tem está função para adicionar um vertice na lista.
31 public void setVertice_na_ListaVertice(Vertice vertice)
32 {
33 //System.out.println(vertice.getNomeVertice());
34 this.lista_no_vertice = lista_no_vertice.insereVerticeNo(lista_no_vertice, vertice);35
36 }
Ele envia para a função de inseirir um vertice no Nó enviando por parâmetro a lista com todos os nós e o Vértice da classe de testes, agora la na no insereVerticeNo na classe Vertice, temos.
27 //Insere um no de Vertice no final da lista de Vertices
28 public NoVertice insereVerticeNo(NoVertice lista_de_vertices, Vertice vertice) {
29 NoVertice novo = criarNoVertice(vertice);
30
31 if (lista_de_vertices == null) {
32 lista_de_vertices = novo;33 } else {
34 NoVertice ultimo = buscaUltimoNo(lista_de_vertices);
35 novo.noAntVertice = ultimo;
36 ultimo.noProxVertice = novo;37 }
38
39 return lista_de_vertices;
40 }
é uma operação comum de inserção de elemento no final de uma lista encadeada, até então não vi nenhum erro, porem quando mando imprimir os Vértices da lista duplamente encadeada, o primeiro elemento é null, desta forma dando erro no java, com ajuda do professor, nos resolvemos colocando um if na hora de imprimir.
65 public void imprimirVertices()
66 {
67 NoVertice lista = lista_no_vertice;
68
69
70 if (lista == null)
71 {
72 System.out.println("não a vertices");
73 }else
74 {
75 while(lista != null)
76 {
77
78 System.out.println(lista.getNomeVertice());
79 lista = lista.getNoProxVertice();80 }
81 }
82 }
O programa entra no while, ou seja a lista é diferente de nul, porem quando é chamado a:
lista.getNomeVertice()
o primeiro valor é nulo dando erro no java, o professor para mostrar o erro fez esta função quando nula voltar o erro como mostrado abaixo.
90 public String getNomeVertice() {
91 return vertice == null ? "erro aqui" : vertice.getNomeVertice();
92 }
então é isso, o nosso problema é que o primeiro valor é sempre nulo, desta forma quando mandamos mostrar no terminal os vertices temos esta resposta.
erro aqui
vertice s0
Vertice s1
Vertice s2
Vertice s3
Vertice s4
Se alguem puder ajudar ficaria grato, se quiserem dar uma olhada mais afundo no codigo, deixarei o link do github
Discussão (1)
Carregando comentários...