Beispiel #1
0
        /// <summary>
        /// FUNÇÃO PARA INCLUI UMA CONEXAO ENTRE DOIS VERTICES EXISTENTES NO GRAFO
        /// </summary>
        /// <param name="cidadeIn"></param>
        /// <param name="cidadeFim"></param>
        public void IncluirConexao(string cidadeIn, string cidadeFim)
        {
            Vertice vertice = Inicio;
            Aresta  nova    = new Aresta();

            while (!vertice.Cidade.Trim().ToLower().Equals(cidadeIn.Trim().ToLower()))
            {
                vertice = vertice.Proximo;
            }

            vertice.Grau++;
            nova.Proxima       = vertice.Adjacentes;
            vertice.Adjacentes = nova;
            nova.Destino       = cidadeFim;

            nova    = new Aresta();
            vertice = Inicio;

            while (!vertice.Cidade.Trim().ToLower().Equals(cidadeFim.Trim().ToLower()))
            {
                vertice = vertice.Proximo;
            }

            vertice.Grau++;
            nova.Proxima       = vertice.Adjacentes;
            vertice.Adjacentes = nova;
            nova.Destino       = cidadeIn;
        }
Beispiel #2
0
        /// <summary>
        /// FUNÇÃO PARA EXPLORAR AS ARESTAS DE UM VERTICE
        /// </summary>
        /// <param name="aresta"></param>
        /// <param name="cidade"></param>
        /// <returns></returns>
        public bool ExplorarAresta(Aresta aresta, string cidade)
        {
            while (aresta != null)
            {
                if (aresta.Destino.Trim().ToLower().Equals(cidade.Trim().ToLower()))
                {
                    return(true);
                }

                aresta = aresta.Proxima;
            }

            return(false);
        }
Beispiel #3
0
        /// <summary>
        /// REALIZA A BUSCA EM LARGURA NO GRAFO
        /// </summary>
        /// <param name="cidade"></param>
        /// <returns></returns>
        public bool BuscaLargura(string cidade, string cidadeInicio)
        {
            DesmarcarVertices();
            Fila fila = new Fila();

            Vertice verticeInicial = BuscaCidade(cidadeInicio);

            fila.ColocarFila(verticeInicial);
            bool encontrou = false;

            while (!fila.Vazio())
            {
                Vertice aux  = fila.BuscaPrimeiro();
                Aresta  auxA = aux.Adjacentes;


                if (!aux.Status)
                {
                    Console.Write(aux.Cidade + ", ");

                    while (auxA != null)
                    {
                        if (aux.Cidade.Trim().ToLower().Equals(cidade.Trim().ToLower()))
                        {
                            encontrou = true;
                        }
                        fila.ColocarFila(BuscaCidade(auxA.Destino));
                        auxA = auxA.Proxima;
                    }

                    aux.Status = true;
                }
                else
                {
                    if (aux.Cidade.Trim().ToLower().Equals(cidade.Trim().ToLower()))
                    {
                        encontrou = true;
                    }
                }

                fila.RemoverFila();
                aux = fila.BuscaPrimeiro();
            }

            return(encontrou);
        }