Exemplo n.º 1
0
        public void insereNoFim(TAD n)
        {
            NohLista <TAD> aux = new NohLista <TAD>(n);

            if (isEmpty())
            {
                inicio = aux;
                fim    = aux;
            }
            else
            {
                aux.setPrior(fim);
                fim.setNext(aux);
                fim = aux;
            }
        }
Exemplo n.º 2
0
        public void inserirAntes(TAD elemento, TAD inserir)
        {
            NohLista <TAD> novoNoh = new NohLista <TAD>(inserir);

            if (isEmpty())
            {
                inicio = novoNoh;
                fim    = novoNoh;
            }
            else
            {
                NohLista <TAD> aux       = inicio;
                bool           encontrou = false;
                do
                {
                    if (aux.getData().Equals(elemento))
                    {
                        encontrou = true;
                        break;
                    }
                    else
                    {
                        aux = aux.getNext();
                    }
                } while (aux != null);
                if (encontrou)
                {
                    if (aux == inicio)
                    {
                        novoNoh.setNext(aux);
                        aux.setPrior(novoNoh);
                        inicio = novoNoh;
                    }
                    else
                    {
                        novoNoh.setPrior(aux.getPrior());
                        novoNoh.setNext(aux);
                        aux.setPrior(novoNoh);
                        novoNoh.getPrior().setNext(novoNoh);
                    }
                }
                else
                {
                    Console.WriteLine("Item não Encontrado!!");
                }
            }
        }
Exemplo n.º 3
0
 public void imprime()
 {
     if (isEmpty())
     {
         Console.WriteLine("Lista vazia - Impossível Imprimir!");
     }
     else
     {
         NohLista <TAD> aux = new NohLista <TAD>();
         aux = inicio;
         Console.Write("Lista:   ");
         do
         {
             Console.Write(aux.getData() + "    ");
             aux = aux.getNext();
         } while (aux != null);
     }
 }
Exemplo n.º 4
0
        public String encontrarCaminho(String orig, String dest)
        {
            Vertice         origV = encontrarVertice(orig);
            Vertice         destV = encontrarVertice(dest);
            Lista <Vertice> fila  = new Lista <Vertice>();

            fila.insereNoFim(origV);

            NohLista <Vertice> percorrer = vertices.getInicio();

            do
            {
                if (percorrer.getData().Equals(origV))
                {
                    percorrer.getData().setDistParcial(0);
                    percorrer.getData().setState(false);
                }
                else
                {
                    percorrer.getData().setDistParcial(infinito);
                    percorrer.getData().setState(false);
                }
                percorrer = percorrer.getNext();
            } while (percorrer != null);

            encontrarCaminho(origV, destV, fila);


            origV = encontrarVertice(orig);
            destV = encontrarVertice(dest);
            Vertice percVertices = destV;
            String  caminhoFinal = percVertices.getName() + "(" + percVertices.getDistParcial().ToString() + "km)" + "\n";

            do
            {
                percVertices = percVertices.getAntecessor();
                caminhoFinal = percVertices.getName() + "(" + percVertices.getDistParcial().ToString() + "km)" + "  ->  " + caminhoFinal;
            } while (percVertices != origV);

            return(caminhoFinal);
        }
Exemplo n.º 5
0
        private void encontrarCaminho(Vertice percorrer, Vertice dest, Lista <Vertice> filaVisitar)
        {
            NohLista <Aresta> arestaAux = percorrer.getArestas().getInicio();
            Vertice           verticeDaAresta;

            //Laço para verificar se a distância parcial até aquele nó é menor que a já existente:
            do
            {
                int d = percorrer.getDistParcial() + arestaAux.getData().getDistance();
                verticeDaAresta = arestaAux.getData().getDestiny();

                if (d < arestaAux.getData().getDestiny().getDistParcial())
                {
                    verticeDaAresta.setDistParcial(d);
                    verticeDaAresta.setAntecessor(percorrer);
                    verticeDaAresta.setState(false);
                    filaVisitar.insereNoFim(verticeDaAresta);
                }

                arestaAux = arestaAux.getNext();
            } while (arestaAux != null);

            percorrer.setState(true);

            do
            {
                if (!filaVisitar.getInicio().getData().getState())
                {
                    encontrarCaminho(filaVisitar.getInicio().getData(), dest, filaVisitar);
                }
                else
                {
                    filaVisitar.remove(filaVisitar.getInicio().getData());
                }
            } while (filaVisitar.getInicio() != null);
        }
Exemplo n.º 6
0
 public void setNext(NohLista <TAD> noh)
 {
     this.next = noh;
 }
Exemplo n.º 7
0
 public void setPrior(NohLista <TAD> noh)
 {
     this.prior = noh;
 }
Exemplo n.º 8
0
 public void setFim(NohLista <TAD> noh)
 {
     this.fim = noh;
 }
Exemplo n.º 9
0
 public void setInicio(NohLista <TAD> noh)
 {
     this.inicio = noh;
 }