Beispiel #1
0
        private void PreencherGrafo()
        {
            string[] conteudoLinha;
            int      pesoAresta;
            Vertice  novoVertA, novoVertB;
            Vertice  novoVertAaux, novoVertBaux;
            Aresta   novaAresta;

            int direcaoAresta;

            // Variável 'i' começa com o valor '1', porque a 1a linha contém a qtd de vértices do grafo
            for (int i = 1; i < this.ConteudoArquivo.Length; i++)
            {
                conteudoLinha = this.ConteudoArquivo[i].Split(';');
                novoVertA     = new Vertice(conteudoLinha[0]);
                novoVertB     = new Vertice(conteudoLinha[1]);

                novoVertAaux = this.ProcurarVertice(novoVertA);
                novoVertBaux = this.ProcurarVertice(novoVertB);

                // Só adiciona vértice na lista se ainda não existe.
                if (novoVertAaux == null)
                {
                    this.ListaVertice.Add(novoVertA);
                }
                else
                {
                    novoVertA = novoVertAaux;
                }

                if (novoVertBaux == null)
                {
                    this.ListaVertice.Add(novoVertB);
                }
                else
                {
                    novoVertB = novoVertBaux;
                }

                // Se um vértice não consta na lista de adjacência do outro,
                // são chamados os métodos para de adicionar adjacente para o vértice A e B
                if (!this.IsAdjacente(novoVertA, novoVertB))
                {
                    novoVertA.AdicionarAdjacente(novoVertB);
                    novoVertB.AdicionarAdjacente(novoVertA);
                }


                pesoAresta    = int.Parse(conteudoLinha[2]);
                direcaoAresta = int.Parse(conteudoLinha[3]);
                novaAresta    = new Aresta(pesoAresta, novoVertA, novoVertB, direcaoAresta);

                this.ListaAresta.Add(novaAresta);

                novoVertA.AdicionarAresta(novaAresta);
                novoVertB.AdicionarAresta(novaAresta);
            }
        }
Beispiel #2
0
 public void AdicionarAresta(Aresta aresta)
 {
     this.aresta.Add(aresta);
 }