Está en la página 1de 5

EMPIEZA LISTA SIMPLE/** Una lista enlazada o encadenada es una coleccin de elementos o nodos, en donde cada uno contiene

datos y un enlace o liga. } @author Nayeli Judith Silva Martinez. @version del 3 al 7 de Octubre del 2011. */ public class ListaEnlazada { private Nodo nodo_inicial; public ListaEnlazada() { nodo_inicial = null; } /** * Isertar un nodo final * @param numero Dato del nodo a insertar * @param caracter Dato caracter del nodo a insertar * return void */ public void insertarAlFinal(int numero, char caracter) { Nodo nodo_nuevo = new Nodo(numero, caracter); if(nodo_inicial == null) nodo_inicial = nodo_nuevo; else getNodoFinal().siguiente = nodo_nuevo; } /** * Localiza y regresa el nodo final, es decir * el nodo que apunta a null. * @param return Nodo */ public Nodo getNodoFinal() { Nodo nodo_actual = nodo_inicial; while(nodo_actual.siguiente != null) nodo_actual = nodo_actual.siguiente; return nodo_actual; } public void imprimeDatosLista() { Nodo nodo_actual=nodo_inicial; while(nodo_actual!=null)

{ System.out.println(nodo_actual.getDatos()); nodo_actual=nodo_actual.siguiente; }

if(nodos==posicion-1) { nodo_nuevo.siguiente=nodo_actual.siguiente; nodo_actual.siguiente=nodo_nuevo; } nodo_actual=nodo_actual.siguiente; nodos++; } if(posicion>=nodos) { insertarAlFinal(numero,caracter); } } }

/** * Localiza y regresa el nodo final, es decir * el nodo que apunta a null. * @param return Nodo */ public void insertarAlInicio(int numero, char caracter) { Nodo nodo_nuevo=new Nodo(numero,caracter); if(nodo_inicial==null) nodo_inicial=nodo_nuevo; else { nodo_nuevo.siguiente=nodo_inicial; nodo_inicial=nodo_nuevo; } } /** Inserta un nodo en la posicin especifica de la lista. @param numero Dato numero del nodo a insertar. @param caracter Dato caracter del noso a insertar. @param posicion Posicin de la lista para insertar el nodo. @return void */ public void insertarEnPosicion(int numero,char caracter,int posicion) { Nodo nodo_actual=nodo_inicial; Nodo nodo_nuevo=new Nodo(numero,caracter); int nodos=0; if(posicion<=0) { insertarAlInicio(numero,caracter); } else{ while(nodo_actual.siguiente !=null) {

/** Elimina el primer nodo de la lista @return void */ public void eliminaPrimerNodo() { if(nodo_inicial==null) return; nodo_inicial=nodo_inicial.siguiente;

} /** Eliminar el ultimo nodo de la lista @return void */ public void eliminaUltimoNodo() { Nodo nodo_actual=nodo_inicial; if(nodo_inicial==null) return; while(nodo_actual.siguiente!=null) nodo_actual=nodo_actual.siguiente; nodo_actual.siguiente=null; } /**

Elimina los nodos que contegnga la informacion especificada. Regresa la cantidad de nodos eliminados @param numero Dato numero a buscar a para eliminar @param caracter Dato a buscar para eliminar @return int */ public int eliminarNodosConInformacion(int numero, char caracter) { Nodo nodo_actual=nodo_inicial; int cont_eliminados=0; if(nodo_inicial.sonDatosIguales(numero,caracter)) { nodo_inicial=nodo_inicial.siguiente; cont_eliminados++; } nodo_actual=nodo_inicial; while(nodo_actual.siguiente!=null) { if(nodo_actual.siguiente.sonDatosIguales(numero,caracter )) { nodo_actual.siguiente=nodo_actual.siguiente.siguiente; cont_eliminados++; } nodo_actual=nodo_actual.siguiente; } if(nodo_actual.sonDatosIguales(numero,caracter)) { nodo_actual.siguiente=null; cont_eliminados++; } return cont_eliminados; } }

NODO /** Definicion de nodo presentaciN @author Nayeli Judith Silva Martinez @version 3 al 7 de Octubre del 2011 */ public class Nodo { private int numero; private char caracter; public Nodo siguiente; public Nodo(int numero, char caracter) { this.numero=numero; this.caracter=caracter; siguiente=null; //NIL } /** Regresa los datos de los campos del nodo y tambien la direccin del nodo y tambien la direccin del siguiente nodo. @return String */ public String getDatos() { return numero +" " +caracter + " direccin: " + this + " siguiente: " + siguiente; } /** Dice si los datos especificado son los datos del nodo @param numero Datos numero a comparar. @param caracter a comparar. @return boolean */

public boolean sonDatosIguales(int numero,char caracter) { if(numero==this.numero && caracter==this.caracter) return true; else return false; } }

LISTA DOBLEMENTE ENLAZADA/** Crea una lista doblemente enlazada. @author Nayeli Judith Silva Martinez. @version 12 octubre 2011 */ public class ListaDoblementeEnlazada { protected NodoDoble nodo_inicial; protected NodoDoble nodo_final; /** Crea una lista doblemente enlazada sin nodo inicial ni nodo final, es decir, vacia. */ public ListaDoblementeEnlazada() { nodo_inicial = null; nodo_final = null; } /** Inserta un nodo nuevo al inicio de la lista @param nombre Valor del campo nombre del nodo nuevo. @param dato Valor del campo dato del nodo nuevo. @return void */ public void insertarNodoAlInicio (String nombre, float dato) { NodoDoble nodo_nuevo = new NodoDoble(nombre,dato); if(nodo_inicial==null ) { nodo_inicial= nodo_nuevo;

nodo_final=nodo_nuevo; return; } nodo_inicial.anterior=nodo_nuevo; nodo_nuevo.siguiente=nodo_inicial; nodo_inicial=nodo_nuevo; }

nodo_inicial=nodo_nuevo; nodo_final=nodo_nuevo; }else{ NodoDoble nodo_actual=nodo_inicial; while(nodo_actual.siguiente!=null){ if(nodos==posicion-1){ nodo_nuevo.siguiente=nodo_actual.siguiente; nodo_actual.siguiente=nodo_nuevo; } nodo_actual=nodo_actual.siguiente; nodos++; } if(posicion>=nodos){ insertarNodoFinal(nombre,dato); } if(posicion==0){ insertarNodoAlInicio(nombre,dato); } } } /** Imprime nodos en orden normal @return void */ public void imprimeDatosLista() { NodoDoble nodo_actual=nodo_inicial; while(nodo_actual!=null) { System.out.println(nodo_actual.getDatos()); nodo_actual=nodo_actual.siguiente; } } /**

/** Insertar un nodo al final de la lista. */ public void insertarNodoFinal(String nombre, float dato) { NodoDoble nodo_nuevo = new NodoDoble(nombre,dato); if(nodo_inicial==null ) { nodo_inicial = nodo_nuevo; nodo_final = nodo_nuevo; return; } nodo_final.siguiente = nodo_nuevo; nodo_nuevo.anterior = nodo_final; nodo_final = nodo_nuevo; } /** Inserta un nodo en la posicion especifica. */ public void insertarNodoEnLaPosicion(int posicion,String nombre,float dato) { NodoDoble nodo_nuevo=new NodoDoble(nombre,dato); int nodos=0; if(nodo_inicial==null){

Imprime nodos en orden alrevez @return void */ public void imprimeDatosLista_alrevez() { NodoDoble nodo_actual=nodo_final; while(nodo_actual!=null) { System.out.println(nodo_actual.getDatos()); nodo_actual=nodo_actual.anterior; } } }
LISTA DOBLEMENTE ENLAZADA /** Crea una lista doblemente enlazada. @author Nayeli Judith Silva Martinez. @version 17 al 21 de octubre 2011 */ public class ListaDobleCircular { protected NodoDoble nodo_inicial; /** Crea una lista doblemente enlazada circular sin nodo inicial ni nodo final, es decir vacia. */ public ListaDobleCircular() { nodo_inicial = null; } /** Inserta un nodo nuevo al inicio de la lista

@param nombre Valor del campo nombre del nodo nuevo. @param dato Valor del campo dato del nodo nuevo. @return void */ public void insertarNodoAlInicio(String nombre, float dato) { NodoDoble nodo_nuevo = new NodoDoble(nombre,dato); if(nodo_inicial==null) { nodo_inicial=nodo_nuevo; nodo_inicial.anterior=nodo_nuevo; nodo_inicial.siguiente=nodo_nuevo; return; } nodo_inicial.anterior.siguiente=nodo_nuevo; nodo_nuevo.siguiente=nodo_inicial; nodo_nuevo.anterior=nodo_inicial.anterior; nodo_inicial.anterior=nodo_nuevo; nodo_inicial=nodo_nuevo; }

} nodo_inicial.anterior.siguiente=nodo_nuevo; nodo_nuevo.siguiente=nodo_inicial; nodo_nuevo.anterior=nodo_inicial.anterior; nodo_inicial.anterior=nodo_nuevo; } /** Este mtodo inserta un nodo en una posicin especifica @return void */ public void insertarNodoEnPosicion(String nombre, float dato, int posicion) { NodoDoble nodo_nuevo= new NodoDoble(nombre,dato); if (nodo_inicial==null) { nodo_inicial=nodo_nuevo; nodo_inicial=nodo_nuevo; return; } if(posicion==0) { insertarNodoAlInicio(nombre,dato); } int posicion_actual=0; NodoDoble nodo_actual=nodo_inicial; while(posicion_actual<posicion && nodo_actual!=null) { nodo_actual=nodo_actual.siguiente; posicion_actual++; } if(nodo_actual==null) {

/** Insertar un nodo al final de la lista. */ public void insertarNodoAlFinal(String nombre, float dato) { NodoDoble nodo_nuevo = new NodoDoble(nombre,dato); if(nodo_inicial==null) { nodo_inicial=nodo_nuevo; nodo_inicial.anterior=nodo_nuevo; nodo_inicial.siguiente=nodo_nuevo; return;

insertarNodoAlFinal(nombre,dato); nodo_nuevo.siguiente=nodo_actual.anterior; nodo_nuevo.siguiente=nodo_actual; nodo_nuevo.anterior.siguiente=nodo_nuevo; nodo_nuevo.siguiente.anterior=nodo_nuevo; } } /** Imprime nodos en orden normal @return void */ public void imprimeDatosCircular() { if (nodo_inicial==null){ System.out.println("Lista Vacia"); } else { NodoDoble nodo_actual=nodo_inicial.siguiente; System.out.println(nodo_inicial.getDatos()); while(nodo_actual != nodo_inicial) { System.out.println(nodo_actual.getDatos()); nodo_actual=nodo_actual.siguiente; } } } /** Imprime los nodos de la lista doble circular del final al principio. @return void */

public void imprimeDatosCircular_alrevez() { if (nodo_inicial==null){ System.out.println("Lista Vacia"); } else { NodoDoble nodo_actual=nodo_inicial.siguiente; System.out.println(nodo_inicial.anterior.get Datos()); while(nodo_actual != nodo_inicial) { System.out.println(nodo_actual.getDatos()); nodo_actual=nodo_actual.siguiente; }

if(nodo_actual==nodo_inicial) { System.out.println(nodo_inicial.getDatos()); } } } }

También podría gustarte