Пример #1
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();
                }
            }
        }