Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Cabezas Fila
Matriz Ortogonal
Cabeza Principal
Cabezas Columna
0,0
0,1
0,2
1,0
1,1
1,2
2,0
2,1
2,2
datos
Tomando como base el Nodo i de la figura 1 vamos a decir que todos los
Nodos que estn hacia abajo del Nodo i son Nodos Fila es decir
representan las cabezas de Filas de la matriz.
i
Abajo
0
1
2
Buscar Nodo
Tambin se realizar el mismo mtodo de bsqueda que el tutorial de la lista
doblemente ligada para esta operacin se crean dos mtodos BuscarFila()
BuscarColumna()
Se pude buscar en los siguientes rdenes les da el mismo resultado
Primero Columna y luego Fila
Eliminar nodo
Para poder eliminar un Nodo solamente se tiene que hacer un sondeo de los
cuatro apuntadores que tiene el nodo a las diferentes localidades de
memoria re-apuntar los nodos.
public void Eliminar(Nodo CabezaPrincial,int i,int j){
Nodo auxColumna;
Nodo auxFila;
//eliminar dato
Nodo nodoBuscado = this.Buscar(CabezaPrincial, i, j);
if(nodoBuscado!=null){
if(nodoBuscado.arriba!=null){
nodoBuscado.arriba.Cambiar_abajo(nodoBuscado.abajo);
}
if(nodoBuscado.abajo!=null){
nodoBuscado.abajo.Cambiar_arriba(nodoBuscado.arriba);
}
if(nodoBuscado.izquierda!=null){
nodoBuscado.izquierda.Cambiar_derecha(nodoBuscado.derecha);
}
if(nodoBuscado.derecha!=null){
nodoBuscado.derecha.Cambiar_izquierda(nodoBuscado.izquierda);
}
nodoBuscado.Cambiar_arriba(null);
nodoBuscado.Cambiar_abajo(null);
nodoBuscado.Cambiar_derecha(null);
nodoBuscado.Cambiar_izquierda(null);
}
//eliminar columna
if(CabezaPrincial.derecha!=null){
auxColumna=CabezaPrincial.derecha;
do{
if(auxColumna.abajo==null){
if(auxColumna.izquierda!=null){
auxColumna.izquierda.Cambiar_derecha(auxColumna.derecha);
}
if(auxColumna.derecha!=null){
auxColumna.derecha.Cambiar_izquierda(auxColumna.izquierda);
}
auxColumna.Cambiar_derecha(null);
auxColumna.Cambiar_izquierda(null);
}
auxColumna=auxColumna.derecha;
}while(auxColumna!=null);
}
//eliminar fila
if(CabezaPrincial.abajo!=null){
auxFila=CabezaPrincial.abajo;
do{
if(auxFila.derecha==null){
if(auxFila.arriba!=null){
auxFila.arriba.Cambiar_abajo(auxFila.abajo);
}
if(auxFila.abajo!=null){
auxFila.abajo.Cambiar_arriba(auxFila.arriba);
}
auxFila.Cambiar_abajo(null);
auxFila.Cambiar_arriba(null);
}
auxFila=auxFila.abajo;
}while(auxFila!=null);
}
}