La implementación de una lista enlazada se muestra en el Ejemplo Lista. Note que con base en lo descrito en el diagrama de clases UML de la siguiente figura y a lo definido en el código fuente de dicho ejemplo, se hace uso de las clases NodoG y ExcepcionEDVacia, mismas que ya han sido explicadas y analizadas en entradas anteriores por lo que ya no se presentan ni se describen aquí (si el lector desea una descripción de dichas clases, refiérase a la entrada Pilas (implementación)).
Adicionalmente a lo anterior, el Ejemplo Lista muestra la definición de los métodos estaVacia e imprime, los cuales también han sido presentados y descritos en ejemplos anteriores; de hecho, se han reutilizado aquí con toda la intención, ya que el comportamiento representado por ellos cumple con los requerimientos necesarios para una lista enlazada.
Con base en lo anterior, únicamente se describirán los siguientes métodos:
- insertaAlInicio (líneas 18-23) como su nombre lo indica, el método inserta elementos en la parte referida por inicio.
- insertaAlFinal (líneas 25-32) como su nombre lo indica, el método inserta elementos en la parte referida por fin.
- eliminaDelInicio (líneas 34-47) como su nombre lo indica, este método elimina elementos en la parte referida por inicio.
Si la estructura de datos está vacía (línea 35), se lanza la excepción ExcepcionEDVacia (línea 36). En caso contrario, se procede a la eliminación del elemento de manera análoga a como se hizo para la cola de espera (líneas 38-46).
- eliminaDelFinal (líneas 49-68) como su nombre lo indica, elimina elementos en la parte referida por fin.
Si la estructura de datos está vacía (línea 50), se lanza la excepción ExcepcionEDVacia (línea 51). En caso contrario, se procede a la eliminación del elemento correspondiente, para ello:
- Si sólo existe un elemento (línea 56), se actualizan las referencias (línea 57). En caso contrario (línea 58):
- Se realiza un recorrido (líneas 59-61) por la estructura de datos desde el inicio (línea 59), para determinar el elemento anterior al referido por fin (¿Por qué?).
- Se actualizan las referencias correspondientes (líneas 63-64).
La clase de prueba para el Ejemplo Lista se muestra en el Ejemplo PruebaLista. Note que se insertan diez números enteros, y que para los números pares se utiliza el método insertaAlInicio, mientras que para los números impares se utiliza el método insertaAlFinal. Observe también cómo para la eliminación ocurre lo correspondiente.
Finalmente, la siguiente figura muestra la salida del Ejemplo PruebaLista.
Finalmente, la siguiente figura muestra la salida del Ejemplo PruebaLista.