public Vertice encontrarVertice(String nome) { Vertice aux = new Vertice(); NohLista <Vertice> percorrer = vertices.getInicio(); bool encontrou = false; if (isEmpty()) { return(null); } else { do { if (percorrer.getData().getName().Equals(nome)) { encontrou = true; aux = percorrer.getData(); break; } percorrer = percorrer.getNext(); } while (percorrer != null); if (encontrou) { return(aux); } else { return(null); } } }
public void inserirDepois(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 == fim) { novoNoh.setPrior(aux); aux.setNext(novoNoh); fim = novoNoh; } else { novoNoh.setNext(aux.getNext()); novoNoh.setPrior(aux); aux.setNext(novoNoh); novoNoh.getNext().setPrior(novoNoh); } } else { Console.WriteLine("Item não Encontrado!!"); } } }
public void remove(TAD n) { if (isEmpty()) { Console.WriteLine("Lista vazia!! Impossível Remover!!"); } else { NohLista <TAD> aux = inicio; bool encontrou = false; do { if (aux.getData().Equals(n)) { encontrou = true; break; } else { aux = aux.getNext(); } } while (aux != null); if (encontrou) { if (aux.getPrior() == null && aux.getNext() == null) { inicio = null; fim = null; //Console.WriteLine("Item removido: " + aux.getData()); } else if (aux.getPrior() == null) { aux.getNext().setPrior(aux.getPrior()); inicio = aux.getNext(); //Console.WriteLine("Item removido: " + aux.getData()); } else if (aux.getNext() == null) { aux.getPrior().setNext(aux.getNext()); fim = aux.getPrior(); //Console.WriteLine("Item removido: " + aux.getData()); } else { aux.getPrior().setNext(aux.getNext()); aux.getNext().setPrior(aux.getPrior()); //Console.WriteLine("Item removido: " + aux.getData()); } } else { Console.WriteLine("Item não Encontrado!!"); } } }
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); } }
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); }
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); }