Está en la página 1de 5

UNIVERSIDAD DE PAMPLONA

PROGRAMA DE INGENIERIA DE SISTEMAS

FABIAN HERNANDO VERA CARRILLO


1005061425
package matrices.dispersas;
/**
*
* @author fabian
*/
public class MatricesDispersas {

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
matrizd m = new matrizd();
m.creadispersa(2, 3);

//Area de impresiones
m.insertar(1, 2, 4);
m.insertar(2, 2, 5);
m.insertar(2, 3, 2);
m.imprimir(1);
m.imprimir(2);
}

}
class nodo {
int fil;
int col;
int info;
nodo(int x,int y, int z){
fil=x;
col=y;
info=z;
}
nodo sigfil;
nodo sigcol;
}
class matrizd {
nodo cab;
matrizd(){
cab=new nodo(0,0,0);
cab.sigfil=cab.sigcol=cab;
}
void creadispersa(int x,int y){
int i=1;
nodo aux=cab;
int j=1;
while (j<=y){
nodo nuevo=new nodo(0,j,0);
nuevo.sigcol=aux.sigcol;
nuevo.sigfil=nuevo;
aux.sigcol=nuevo;
aux=nuevo;
j=j+1;
}
aux=cab;
while (i<=x){
nodo nuevo1=new nodo(i,0,0);
nuevo1.sigfil=aux.sigfil;
nuevo1.sigcol=nuevo1;
aux.sigfil=nuevo1;
aux=nuevo1;
i=i+1;
}
}
void insertar(int fila, int columna,int info){
nodo nuevo = new nodo(fila,columna,info);
nodo a = arriba(columna,fila,cab);
nodo i = izq(fila,columna,cab);
nuevo.sigcol = i.sigcol;
i.sigcol = nuevo;
nuevo.sigfil = a.sigfil;
a.sigfil = nuevo;
}
nodo arriba(int columna,int fila,nodo r){
nodo aux = r;
nodo respuesta = null;
while(aux.col != columna){
aux = aux.sigcol;
}
respuesta = aux;
nodo p = aux;
while(aux.sigfil != p){
if(aux.sigfil.fil > fila){
respuesta = aux;
break;
}
aux = aux.sigfil;
}
return respuesta;
}
nodo izq(int fila,int columna,nodo r){
nodo aux = r;
nodo respuesta = null;
while(aux.fil != fila){
aux = aux.sigfil;
}
respuesta = aux.sigcol;
nodo p = aux;
while(aux.sigcol != p){
if(aux.sigcol.col > columna){
respuesta = aux;
break;
}
aux = aux.sigcol;
}
return respuesta;
}
void imprimir(int n){
nodo t = cab;
while(t.fil != n){
t = t.sigfil;
}
System.out.println("\nFila: "+t.fil);
nodo aux = t.sigcol;
while(aux != t){
System.out.print("Info: "+aux.info+" :Fila ant: "+aux.sigfil.info+"\t");
aux = aux.sigcol;
}
System.out.println();
}
}

También podría gustarte