jueves, 12 de marzo de 2015

LISTAS ENLAZADAS

LISTAS:


Una lista es una estructura de datos dinámica que cumple las siguientes características:


Dispone de un numero variable de elementos (desde cero hasta "n"). Su tamaño únicamente se limita por la cantidad de memoria que haya disponible en el sistema. Si la lista tiene cero elementos recibe el nombre de "Lista vacía".


El primer elemento de la lista, cuando ésta no está vacía es conocido y se puede acceder a él siempre que se desee.


Los elementos de la lista guardan una relación de orden (o precedencia), de forma que para cada uno de ellos es posible saber cual es su "elemento siguiente".






























                                        clase nodo
                                 
                        public class Nodo{
                             private   "argumentos"
                             private Nodo sig;
                        }





                 
                             public class Nodo{
                                 private estudiante dato;
                                 private Nodo sig;
                             }

Cuando la vairable apunta a un objeto tiene derecho sobre el objeto a obtener y modificar

_________________________________________________________________________________




la salida seria  System.out.println(Estudiantes.getsig().getsig().getdato().getnombre){
                     Nodo p= estudiantees;
                     p= p.getsig;  
                       while (p!=null){
                       System.out.println(p.getdato().getcod());
                       System.out.println(p.getdato().getnom());
                       }
                     }
_______________________________________________________________________________



TIPOS DE LISTAS:
    Lista simplemente enlazada
    Lista doblemente enlazada
    Lista circular
   



LISTA SIMPLEMENTE ENLAZADA

Las listas enlazadas son aquellas listas cuyos elementos se encuentran almacenados en posiciones de memoria. Cada nodo está formado por un mínimo de dos campos:





SIMPLE CIRCULAR 




LISTA DOBLEMENTE ENLAZADA


Las listas doblemente enlazadas son estructuras de datos semejantes a las listas enlazadas simples.
La asignación de memoria es hecha al momento de la ejecución. 
En cambio, en relación a la listas enlazada simple el enlace entre los elementos se hace gracias a dos punteros (uno que apunta hacia el elemento anterior y otro que apunta hacia el elemento siguiente).






DOBLEMENTE CIRCULAR



LISTA CIRCULAR 

Se caracterizan porque el campo puntero del último nodo, en lugar de apuntar a un valor Nulo, apunta al primer nodo o elemento de la lista, convirtiéndose en una estructura de datos circular.












OPERACIONES EN LISTAS ENLAZADAS 

Insertar
  • inicio
  • final
Eliminar
  • inicio
  • final
Buscar para
  • insertar antes
  • insertar despues
  • eliminar
________________________________________________________________________________


INSERTAR 

AL INICIO (SIMPLE)


primero crear el nodo 

                   dato,sig
p= new nodo(d   ,  p)
                               

DOBLE


                                     dato,ant, sig
p.setAnt(new NodoDoble(d,   null,  p));
p=p.getAnt();



INSERTAR  

AL FINAL (SIMPLE)



if(inicio!= null){
  fin.setsig(new Nodo(d,null));
  fin=fin.getsig();
}else{
        inicio = fin = nwe Nodo (d, null); 




DOBLE


if (inicio!= null){
    fin.setsig(new nodoDoble(d, fin, null));
    fin=fin.getsig();
}else{
        inicio=fin=new nodoDoble(d, null, null);

________________________________________________________________________________


ELIMINAR

AL FINAL (SIMPLE)

 if (inicio!= null){
  inicio= inicio.getsig();
}else{
   System.out.println("lista vacia");

}



AL FINAL (DOBLE)




if (inicio!= null){
 inicio=inicio.getsig();
 inici.detAnt(null);
 }else{
    System.out.println("lista vacia");
    }
}

AL FINAL (SIMPLE)


if (inicio!=null){
  nodo actual=inicio;
  while (actual.getsig()!=fin){
           actual=actual.getsig();
  }
   actual.setsig(null);
   fin=actual;
}else{
        System.out,println("lista vacia");
}

AL FINAL (DOBLE)
if(inicio!=null){
   fin=fin.getAnt();
   fin.setsig(null);
}else{
        System.out,println("lista vacia");
}

_________________________________________________________________________________


BUSCAR PARA (INSERTAR ANTES)



Nodo anterior = null;
Nodo actual= inicio;
  while (actual !=null && xclave.compareto(Actual.getclave())!=0){
 }  anterior actual;          
     actual = actual.getsig();
      if (actual!=null){
          if (actual == inicio){
               inicio=new nodo(d, inicio);
         }else{
                 anterior.setdig(new nodo(d, actual());
         }else{
                  System.out,println("lista vacia")
     


CONSULTAR


if (actual!= null){
   actual.setsig(new Nodo(xdato, xclave, actual.getsig()));
   if (actual== fin){
       fin=fin.getsig();
   }else{
           System.out,println("lista vacia")
}


ELIMINAR

if (actual!=null){
   if(actual==inicio){
      inicio=inicio.getsig();
}else{
        anterior.setsig(actual.getsig());
        if (actual==fin){
        }
}else{
        System.out,println("Dato no encontrado");
}


MODIFICAR

if (actual !=null){
estudiante e= actual.getDato();
e.set{  cod(xcod);
           nom(xnom);
           prog(xprog);
}else{
      System.out,println("Dato no encontrado");
}
_________________________________________________________________________________




No hay comentarios.:

Publicar un comentario