예제 #1
0
        public NodoMatriz COnseguirNodoAEliminar(int PrimerPais, int SegundoPais)
        {
            Boolean encontrado = false;

            if (PrimerPais != SegundoPais)
            {
                NodoRamaArbol modificado = busqueda(PrimerPais);

                NodoMatriz recorrido = modificado.getFilaPrimero();
                while (recorrido != null)
                {
                    if (recorrido.getCodigoPrimerPais() == SegundoPais || recorrido.getCodigosegundoPais() == SegundoPais)
                    {
                        return(recorrido);
                    }

                    recorrido = recorrido.getSiguienteMatriz();
                }

                if (!encontrado)
                {
                    Console.WriteLine("Ruta no existente");
                }
            }
            return(null);
        }
예제 #2
0
        public void GraficarGrafo1(RamaArbol raiz)
        {
            if (raiz == null)
            {
                return;
            }
            //  nodos += raiz.getGraphNodo();
            NodoRamaArbol aux = raiz.getPrimero();

            while (aux != null)
            {
                GraficarGrafo1(aux.getIzquierda());

                if (aux.getFilaPrimero() != null)
                {
                    NodoMatriz recorri = aux.getFilaPrimero();
                    while (recorri != null)
                    {
                        ContenidoGrafo += "Grafo" + recorri.getCodigoPrimerPais() + "--Grafo" + recorri.getCodigosegundoPais() + "\n";
                        recorri         = recorri.getSiguienteMatriz();
                    }
                }

                aux = aux.getSiguiente();
            }
            aux = raiz.getPrimero();
            while (aux.getSiguiente() != null)
            {
                aux = aux.getSiguiente();
            }
            GraficarGrafo1(aux.getDerecha());
        }
예제 #3
0
        public void ModificarRuta(int PrimerPais, int SegundoPais, float costo, float tiempo)
        {
            Boolean encontrado = false;

            if (PrimerPais != SegundoPais)
            {
                NodoRamaArbol modificado = busqueda(PrimerPais);

                NodoMatriz recorrido = modificado.getFilaPrimero();
                while (recorrido != null)
                {
                    if (recorrido.getCodigoPrimerPais() == SegundoPais || recorrido.getCodigosegundoPais() == SegundoPais)
                    {
                        //agregado
                        matrizcosto  = false;
                        matriztiempo = false;
                        //agregado
                        encontrado = true;
                        recorrido.setCosto(costo);
                        recorrido.setTiempo(tiempo);
                    }

                    recorrido = recorrido.getSiguienteMatriz();
                }

                if (!encontrado)
                {
                    Console.WriteLine("Ruta no existente");
                }
            }
        }
예제 #4
0
        public void Graficar5(RamaArbol raiz)
        {
            if (raiz == null)
            {
                return;
            }
            //  nodos += raiz.getGraphNodo();
            NodoRamaArbol aux = raiz.getPrimero();

            while (aux != null)
            {
                Graficar5(aux.getIzquierda());
                Console.WriteLine(aux.getCodigoDestino());
                ////////////////////////////////////////////////// aqui empieza la inserccion a la matriz

                if (aux.getColumnaPrimero() != null)
                {
                    Contenido += "C" + aux.getCodigoDestino() + "->";
                    NodoMatriz recorrido = aux.getColumnaPrimero();
                    while (recorrido != null)
                    {
                        if (recorrido.getAbajoMatriz() != null)
                        {
                            Contenido += "F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + "->";
                        }
                        else
                        {
                            Contenido += "F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + ";\n";

                            break;
                        }
                        recorrido = recorrido.getAbajoMatriz();
                    }
                    while (recorrido != null)
                    {
                        if (recorrido.getAribaMatriz() != null)
                        {
                            Contenido += "F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + "->";
                        }
                        else
                        {
                            Contenido += "F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + "->C" + aux.getCodigoDestino() + ";\n";
                        }
                        recorrido = recorrido.getAribaMatriz();
                    }
                }
                aux = aux.getSiguiente();
            }
            aux = raiz.getPrimero();
            while (aux.getSiguiente() != null)
            {
                aux = aux.getSiguiente();
            }
            Graficar5(aux.getDerecha());
        }
예제 #5
0
 public NodoMatriz(int PrimerPais, int SegundoPais, float Costo, float Tiempo)
 {
     this.CodigoPrimerPais  = PrimerPais;
     this.CodigosegundoPais = SegundoPais;
     this.Costo             = Costo;
     this.Tiempo            = Tiempo;
     this.AnteriorMatriz    = null;
     this.SiguienteMatriz   = null;
     this.AribaMatriz       = null;
     this.AbajoMatriz       = null;
 }
예제 #6
0
        public void Graficar2(RamaArbol raiz)
        {
            if (raiz == null)
            {
                return;
            }
            //  nodos += raiz.getGraphNodo();
            NodoRamaArbol aux = raiz.getPrimero();

            while (aux != null)
            {
                Boolean llave = false;
                Graficar2(aux.getIzquierda());
                Console.WriteLine(aux.getCodigoDestino());
                ////////////////////////////////////////////////// aqui empieza la inserccion a la matriz



                Contenido += "{ \nrank=same;\n";


                Contenido += "F" + aux.getCodigoDestino() + "[label = \"" + aux.getNombreDestino() + "\"   ];\n ";
                if (aux.getFilaPrimero() != null)
                {
                    NodoMatriz recorrido = aux.getFilaPrimero();
                    while (recorrido != null)
                    {
                        Contenido += "F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + "[label = \"Costo: " + recorrido.getCosto() + ",Tiempo: " + recorrido.getTiempo() + "\"   ];\n ";
                        recorrido  = recorrido.getSiguienteMatriz();
                        llave      = true;
                    }
                    Contenido += "} \n";
                }
                if (!llave)
                {
                    Contenido += "} \n";
                }
                aux = aux.getSiguiente();
            }
            aux = raiz.getPrimero();
            while (aux.getSiguiente() != null)
            {
                aux = aux.getSiguiente();
            }
            Graficar2(aux.getDerecha());
        }
예제 #7
0
        public float getTiempo(int primerpais, int segundopais)
        {
            if (primerpais != segundopais)
            {
                NodoRamaArbol modificado = busqueda(primerpais);

                NodoMatriz recorrido = modificado.getFilaPrimero();
                while (recorrido != null)
                {
                    if (recorrido.getCodigoPrimerPais() == segundopais || recorrido.getCodigosegundoPais() == segundopais)
                    {
                        return(recorrido.getTiempo());
                    }

                    recorrido = recorrido.getSiguienteMatriz();
                }
            }
            return(0);
        }
예제 #8
0
        public void Graficar6(RamaArbol raiz)
        {
            if (raiz == null)
            {
                return;
            }
            //  nodos += raiz.getGraphNodo();
            NodoRamaArbol aux = raiz.getPrimero();

            while (aux != null)
            {
                Graficar6(aux.getIzquierda());
                Console.WriteLine(aux.getCodigoDestino());
                ////////////////////////////////////////////////// aqui empieza la inserccion a la matriz

                if (aux.getFilaPrimero() != null)
                {
                    if (aux.getFilaPrimero() != null)
                    {
                        NodoMatriz recorrido = aux.getFilaPrimero();
                        Contenido += "F" + aux.getCodigoDestino() + "->F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + "[constraint=false];\n";
                        Contenido += "F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + "->F" + aux.getCodigoDestino() + "[constraint=false];\n";
                        while (recorrido.getSiguienteMatriz() != null)
                        {
                            Contenido += "F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + "->F" + recorrido.getSiguienteMatriz().getCodigoPrimerPais() + "C" + recorrido.getSiguienteMatriz().getCodigosegundoPais() + "[constraint=false];\n";
                            Contenido += "F" + recorrido.getSiguienteMatriz().getCodigoPrimerPais() + "C" + recorrido.getSiguienteMatriz().getCodigosegundoPais() + "->F" + recorrido.getCodigoPrimerPais() + "C" + recorrido.getCodigosegundoPais() + "[constraint=false];\n";
                            recorrido  = recorrido.getSiguienteMatriz();
                        }
                        Contenido += "\n";
                    }
                }
                aux = aux.getSiguiente();
            }
            aux = raiz.getPrimero();
            while (aux.getSiguiente() != null)
            {
                aux = aux.getSiguiente();
            }
            Graficar6(aux.getDerecha());
        }
예제 #9
0
 /**
  *
  * @param anterior
  */
 public void setColumnaPrimero(NodoMatriz ColumnaPrimero)
 {
     this.ColumnaPrimero = ColumnaPrimero;
 }
예제 #10
0
 /**
  *
  * @param anterior
  */
 public void setFilaPrimero(NodoMatriz FilaPrimero)
 {
     this.FilaPrimero = FilaPrimero;
 }
예제 #11
0
        public void ELiminarMatriz(int PrimerPais, int SegundoPais)
        {
            NodoMatriz eliminar = COnseguirNodoAEliminar(PrimerPais, SegundoPais);

            if (eliminar != null)
            {
                //agregado
                matrizcosto  = false;
                matriztiempo = false;
                //agregado
                if (eliminar.getArribaCabecera() != null)
                {
                    if (eliminar.getAbajoMatriz() != null)
                    {
                        eliminar.getArribaCabecera().setColumnaPrimero(eliminar.getAbajoMatriz());
                    }
                    else
                    {
                        eliminar.getArribaCabecera().setColumnaPrimero(null);
                    }
                }
                if (eliminar.getIzquierdaCabecera() != null)
                {
                    if (eliminar.getSiguienteMatriz() != null)
                    {
                        eliminar.getIzquierdaCabecera().setFilaPrimero(eliminar.getSiguienteMatriz());
                    }
                    else
                    {
                        eliminar.getIzquierdaCabecera().setFilaPrimero(null);
                    }
                }
                if (eliminar.getAnteriorMatriz() != null)
                {
                    if (eliminar.getSiguienteMatriz() != null)
                    {
                        eliminar.getSiguienteMatriz().setAnteriorMatriz(eliminar.getAnteriorMatriz());
                        eliminar.getAnteriorMatriz().setSiguienteMatriz(eliminar.getSiguienteMatriz());
                    }
                    else
                    {
                        eliminar.getAnteriorMatriz().setSiguienteMatriz(null);
                    }
                }
                if (eliminar.getSiguienteMatriz() != null)
                {
                    if (eliminar.getAnteriorMatriz() != null)
                    {
                        eliminar.getAnteriorMatriz().setSiguienteMatriz(eliminar.getSiguienteMatriz());
                        eliminar.getSiguienteMatriz().setAnteriorMatriz(eliminar.getAnteriorMatriz());
                    }
                    else
                    {
                        eliminar.getSiguienteMatriz().setAnteriorMatriz(null);
                    }
                }
                if (eliminar.getAribaMatriz() != null)
                {
                    if (eliminar.getAbajoMatriz() != null)
                    {
                        eliminar.getAbajoMatriz().setAribaMatriz(eliminar.getAribaMatriz());
                        eliminar.getAribaMatriz().setAbajoMatriz(eliminar.getAbajoMatriz());
                    }
                    else
                    {
                        eliminar.getAribaMatriz().setAbajoMatriz(null);
                    }
                }
                if (eliminar.getAbajoMatriz() != null)
                {
                    if (eliminar.getAribaMatriz() != null)
                    {
                        eliminar.getAribaMatriz().setAbajoMatriz(eliminar.getAbajoMatriz());
                        eliminar.getAbajoMatriz().setAribaMatriz(eliminar.getAribaMatriz());
                    }
                    else
                    {
                        eliminar.getAbajoMatriz().setAribaMatriz(null);
                    }
                }
            }
        }
예제 #12
0
        public void IngresarDatos(int filaCoordenada, int columnaCoordenada, float Costo, float Tiempo)
        {
            //agregado
            matrizcosto  = false;
            matriztiempo = false;
            //agregado
            NodoRamaArbol Fila    = busqueda(filaCoordenada);
            NodoRamaArbol Columna = busqueda(columnaCoordenada);
            //Ya tenemos los nodos fila y columna del que vamos a insertar
            NodoMatriz Dato = new NodoMatriz(filaCoordenada, columnaCoordenada, Costo, Tiempo);

            if (Fila.getFilaPrimero() == null)
            {
                Fila.setFilaPrimero(Dato);
                Dato.setIzquierdaCabecera(Fila);
                Dato.setAnteriorMatriz(null);
                Dato.setSiguienteMatriz(null);
            }
            else
            {
                NodoMatriz auxiliar = Fila.getFilaPrimero();

                while (auxiliar != null)
                {
                    if (auxiliar.getCodigosegundoPais() > columnaCoordenada)//Principio
                    {
                        auxiliar.setAnteriorMatriz(Dato);
                        Dato.setSiguienteMatriz(auxiliar);
                        Fila.setFilaPrimero(Dato);
                        Dato.setIzquierdaCabecera(Fila);
                        Dato.setAnteriorMatriz(null);
                        auxiliar.setIzquierdaCabecera(null);
                        break;
                    }
                    else
                    {
                        if (auxiliar.getSiguienteMatriz() != null)
                        {
                            if (auxiliar.getSiguienteMatriz().getCodigosegundoPais() > columnaCoordenada)//En Medio
                            {
                                Dato.setSiguienteMatriz(auxiliar.getSiguienteMatriz());
                                auxiliar.getSiguienteMatriz().setAnteriorMatriz(Dato);
                                Dato.setAnteriorMatriz(auxiliar);
                                auxiliar.setSiguienteMatriz(Dato);
                                Dato.setIzquierdaCabecera(null);
                                break;
                            }
                        }
                        else
                        {
                            Dato.setAnteriorMatriz(auxiliar);
                            auxiliar.setSiguienteMatriz(Dato);
                            Dato.setSiguienteMatriz(null);
                            Dato.setIzquierdaCabecera(null);
                            break;
                        }
                    }
                    auxiliar = auxiliar.getSiguienteMatriz();
                }
            }
            if (Columna.getColumnaPrimero() == null)
            {
                Columna.setColumnaPrimero(Dato);
                Dato.setArribaCabecera(Columna);
                Dato.setAribaMatriz(null);
                Dato.setAbajoMatriz(null);
            }
            else
            {
                NodoMatriz aux = Columna.getColumnaPrimero();;
                while (aux != null)
                {
                    if (aux.getCodigoPrimerPais() > filaCoordenada)//Principio
                    {
                        aux.setAribaMatriz(Dato);
                        Dato.setAbajoMatriz(aux);
                        Columna.setColumnaPrimero(Dato);
                        Dato.setArribaCabecera(Columna);
                        Dato.setAribaMatriz(null);
                        aux.setArribaCabecera(null);
                        break;
                    }
                    else
                    {
                        if (aux.getAbajoMatriz() != null)//en medio
                        {
                            if (aux.getAbajoMatriz().getCodigoPrimerPais() > filaCoordenada)
                            {
                                Dato.setAbajoMatriz(aux.getAbajoMatriz());
                                aux.getAbajoMatriz().setAribaMatriz(Dato);
                                Dato.setAribaMatriz(aux);
                                aux.setAbajoMatriz(Dato);
                                Dato.setArribaCabecera(null);
                                break;
                            }
                        }
                        else//Ultimo
                        {
                            Dato.setAribaMatriz(aux);
                            aux.setAbajoMatriz(Dato);
                            Dato.setAbajoMatriz(null);
                            Dato.setArribaCabecera(null);
                            break;
                        }
                    }
                    aux = aux.getAbajoMatriz();
                }
            }
        }
예제 #13
0
 public void setSiguienteMatriz(NodoMatriz SiguienteMatriz)
 {
     this.SiguienteMatriz = SiguienteMatriz;
 }
예제 #14
0
 public void setAnteriorMatriz(NodoMatriz AnteriorMatriz)
 {
     this.AnteriorMatriz = AnteriorMatriz;
 }
예제 #15
0
 public void setAbajoMatriz(NodoMatriz AbajoMatriz)
 {
     this.AbajoMatriz = AbajoMatriz;
 }
예제 #16
0
 public void setAribaMatriz(NodoMatriz AribaMatriz)
 {
     this.AribaMatriz = AribaMatriz;
 }