Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

maou2707

Erro no Método de Inserir, Algoritmo de java para manipular Grafos

Recommended Posts

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

https://github.com/OrdemDEEV/ProjetoGrafos

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, eu resolvi da seguinte forma, sempre que ia percorrer a lista duplamente encadeada, fazia ela receber o próximo nó e é como se não estivesse nada de errada, eu não sei se é gambiarra, mas funcionou, se alguém conhecer algum outro método, só mandar email.

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por violin101
      Caros amigos, saudações.
       
      Estou escrevendo um Sistema Java Web e quando clico no Botão Salvar, o Java acusa esse erro:

      ERROR: Cannot invoke "Object.toString()" because the return value of "java.util.Map.get(Object)" is null
       
      Já tentei de várias formas resolver esse problema, mas não estou conseguindo.

      Por favor, alguém pode me ajudar identificar a origem e resolver o problema acima ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.

      Estou enfrentando um problema que não consigo entender.

      Após Instalar o MySql versão 8.0.36, funciona corretamente realizando as conexões.

      O problema é:
      ---[ após reiniciar o micro, o MySql não faz as conexões.
      --[ tenta localizar este arquivo, mas não acha: my.ini
       
      Onde localizo ou configuro este arquivo na Pasta MySql ?

      Grato,
       
      Cesar
    • Por violin101
      Caros amigos, saudações.
       
      Por favor, preciso de ajuda em Relação a Instalar o Jasper Reports no Eclipse, pois a opção de Eclipse Marketplace, não encontra para instalar.
       
      Já tentei de todas as formas mas não consegui, alguém conhece alguma rotina explicando este procedimento ?
       
      Grato,
       
      Cesar
    • Por violin101
      Caros amantes da informática.
       
      Saudações.
       
      Estou usando o Eclipse Mars versão 4.5.0  e o 4.5.2, acredito que deva ter versões mais novas. 
      Sou novato em JAVA e estou encontrando alguns problema em Instalação de alguns plugins, como por exemplo:
       
      1) quando tento instalar o JBoss Tools através do Eclipse Marteplace, o Eclipse não o encontra na lista de plugins.
      2) se tento instalar através do Install New Software, abaixa alguns arquivos, mas também não instala o JBoss.
      3) se abro o site e arrasto o download para a área de trabalho do Eclipse, também não instala o JBoss.
       
      Caros amigos, existe outra alguma forma de instalar o JBoss Tools no Eclipse e como seria ?
       
      Grato,
       
      Cesar
       
       
    • Por ILR master
      Pessoal, pergunta bem simples. Abaixo tenho o seguinte código:
       
      <script>
      function alerta()
      {
        if (window.confirm("Você realmente quer sair?")) {
          window.open("sair.html");
      }
      }
      </script>
       
      Funciona perfeitamente, só que está abrindo em outra janela e quero que abra na mesma janela.
       
      Alguém pode me ajudar?
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.