miércoles, 28 de mayo de 2014

Clases en Java (Lista Simple Enlace)


A   continuación   se   muestra   la   implementación   de   una lista que hace uso de un  Nodo   de   simple   enlace genérico, esto para poder parametrizar el tipo de dato de dato.

package negocio; /** * @author Ing. Angel Céspedes Quiroz * @facebook https://www.facebook.com/acq1305 * @mail angel@procesinc.com * @see <a href="http://www.procesinc.com">http://www.procesinc.com</a> * @version 1.0 17 de Noviembre de 2013 */ public class ListaSE<E> { private Nodo<E> inicio; /** * Crea una lista vacia * */ public ListaSE() { inicio = null; } /** * Verifica si la lista está vacia * * @return el resultado de ver si la lista está vacía */ public boolean vacia() { return inicio == null; } /** * Inserta un dato al inicio de toda la lista * * @param x es el nuevo dato para la lista */ public void insertarInicio(E x) { Nodo<E> nuevo = new Nodo<E>(x); if (!vacia()) { nuevo.setSig(inicio); } inicio = nuevo; } /** * Inserta un nuevo dato al final de toda la lista * * @param x es el dato a insertar al Final */ public void insertarFinal(E x) { Nodo<E> nuevo = new Nodo<E>(x); if (vacia()) { inicio = nuevo; } else { Nodo<E> actual = inicio; while (actual.getSig() != null) { actual = actual.getSig(); } actual.setSig(nuevo); } } /** * Cuenta la cantidad de elementos de la lista * * @return el número de elementos de la lista */ public int tamaño() { int contador = 0; for (Nodo<E> x = inicio; x != null; x = x.getSig()) { contador++; } return contador; } /** * @param pos La posición del elemento * @return el elemento de la posición pos */ public E obtener(int pos) { int i = 0; Nodo<E> x = inicio; while (x != null && i != pos) { x = x.getSig(); i++; } return x == null ? null : x.getDato(); } /** * @param pos La posición del elemento * @return el elemento de la posición pos */ public E eliminar(int pos) { int i = 0; Nodo<E> an = null; Nodo<E> ac = inicio; while (ac != null && i != pos) { an = ac; ac = ac.getSig(); i++; } E res = null; if (ac != null) { res = ac.getDato(); if (an == null) { inicio = inicio.getSig(); } else { an.setSig(ac.getSig()); } } return res; } /** * * @param d el elemento a buscar * @return el resultado de ver si elemento está o no */ public boolean buscar(E d) { Nodo<E> x = inicio; while (x != null && !x.getDato().equals(d)) { x = x.getSig(); } return x != null; } /** * Devuelve en cadena a la lista [a,b,c....z] * * @return todos los elementos en formato cadena */ @Override public String toString() { String res = "[" + resto() + "]"; return res; } //método recursivo que obtiene todos los elementos de la lista private String resto() { String res=""; for (Nodo<E> x = inicio; x != null; x = x.getSig()) { res = res + ", " + x.getDato(); } return res; } public static void main(String[] args) { ListaSE<Integer> lista = new ListaSE<Integer>(); //lista.insertarFinal("Hola Nena");//marca error por que nuestra lista solo acepta enteros lista.insertarFinal(13); lista.insertarFinal(1); //lista.insertarFinal(true);//marca error por que nuestra lista solo acepta enteros System.out.println(lista); } }

0 comentarios:

Publicar un comentario