Vous êtes sur la page 1sur 13

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 1 de 13

LISTAS ENLAZADAS

Qu es una lista enlazada?


Una lista enlazada es un conjunto de elementos llamados nodos en los que cada uno de ellos
contiene un dato y tambin la direccin del siguiente nodo, donde el orden de los mismos se establece
mediante punteros.
La idea bsica es que cada componente de la lista incluya un puntero que indique donde puede
encontrarse el siguiente componente por lo que el orden relativo de estos puede ser fcilmente alterado
modificando los punteros lo que permite, a su vez, aadir o suprimir elementos de la lista. El primer
elemento de la lista es la cabecera, que slo contiene un puntero que seala el primer elemento de la
lista.
El ltimo nodo de la lista apunta a NULL (nulo) porque no hay ms nodos en la lista. Se usar el
trmino NULL para designar el final de la lista
Listas Enlazadas frente a Arrays
Las listas enlazadas tienen las siguientes ventajas sobre los arrays:
No requieren memoria extra para soportar la expansin. Por el contrario, los arrays requieren
memoria extra si se necesita expandirlo.
Ofrecen una insercin/borrado de elementos ms rpida que sus operaciones equivalentes en los
arrays. Slo se tienen que actualizar los enlaces despus de identificar la posicin de insercin/borrado.
Desde la perspectiva de los arrays, la insercin de datos requiere el movimiento de todos los otros
datos del array para crear un elemento vaco. De forma similar, el borrado de un dato existente requiere
el movimiento de todos los otros datos para eliminar el elemento vaco.
En contraste, los arrays ofrecen las siguientes ventajas sobre las listas enlazadas:
Los elementos de los arrays ocupan menos memoria que los nodos porque no requieren campos
de enlace. Los arrays ofrecen un acceso ms rpido a los datos, mediante ndices basados en enteros.
Las listas enlazadas son ms apropiadas cuando se trabaja con datos dinmicos. En otras palabras,
inserciones y borrados con frecuencia. Por el contrario, los arrays son ms apropiados cuando los datos
son estticos (las inserciones y borrados son raras). De todas formas, no olvide que si se queda sin

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 2 de 13

espacio cuando aade tems a un array, debe crear un array ms grande, copiar los datos del array
original el nuevo array mayor y eliminar el original. Esto cuesta tiempo, lo que afecta especialmente al
rendimiento si se hace repetidamente.
Mezclando una lista de enlace simple con un array uni-dimensional para acceder a los nodos
mediante los ndices del array no se consigue nada. Gastar ms memoria, porque necesitar los
elementos del array ms los nodos, y tiempo, porque necesitar mover los tems del array siempre que
inserte o borre un nodo. Sin embargo, si es posible integrar el array con una lista enlazada para crear
una estructura de datos til.
Existen diferentes tipos de listas enlazadas: Lista Enlazadas Simples, Listas Doblemente Enlazadas
y Listas Enlazadas Circulares.
Las listas enlazadas pueden ser implementadas en muchos lenguajes. Lenguajes tales como Lisp
y Scheme tiene estructuras de datos ya construidas, junto con operaciones para acceder a las listas
enlazadas. Lenguajes imperativos u orientados a objetos tales como C, C++ o Java disponen de
referencias para crear listas enlazadas.
Las operaciones que podemos realizar sobre una lista enlazada son las siguientes:
Recorrido. Esta operacin consiste en visitar cada uno de los nodos que forman la lista. Para
recorrer todos los nodos de la lista, se comienza con el primero, se toma el valor del campo liga para
avanzar al segundo nodo, el campo liga de este nodo nos dar la direccin del tercer nodo, y as
sucesivamente.
Insercin. Esta operacin consiste en agregar un nuevo nodo a la lista. Para esta operacin se
pueden considerar tres casos:
Insertar un nodo al inicio.
Insertar un nodo antes o despus de cierto nodo.
Insertar un nodo al final.
Borrado. La operacin de borrado consiste en quitar un nodo de la lista, redefiniendo las ligas que
correspondan. Se pueden presentar cuatro casos:
Eliminar el primer nodo.
Eliminar el ltimo nodo.
Eliminar un nodo con cierta informacin.
Eliminar el nodo anterior o posterior al nodo cierta con informacin.
Bsqueda. Esta operacin consiste en visitar cada uno de los nodos, tomando al campo liga como
puntero al siguiente nodo a visitar.

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 3 de 13

Esquema de un nodo y una lista enlazada.

LISTA ENLAZADA SIMPLE


La lista enlazada bsica es la lista enlazada simple la cual tiene un enlace por nodo. Este enlace
apunta al siguiente nodo en la lista, o al valor NULL o a la lista vaca, si es el ltimo nodo.

LISTAS ENLAZADAS DOBLES


Cada nodo tiene dos enlaces: uno apunta al nodo anterior, o apunta al valor NULL o a la lista vaca
si es el primer nodo; y otro que apunta al siguiente nodo siguiente, o apunta al valor NULL o a la lista
vaca si es el ltimo nodo.

Listas enlazadas circulares


En una lista enlazada circular, el primer y el ltimo nodo estn unidos. Esto se puede hacer tanto
para listas enlazadas simples como para las doblemente enlazadas. Para recorrer un lista enlazada
circular podemos empezar por cualquier nodo y seguir la lista en cualquier direccin hasta que se
regrese hasta el nodo original. Desde otro punto de vista, las listas enlazadas circulares pueden ser
vistas como listas sin comienzo ni fin. Este tipo de listas es el ms usado para dirigir buffers para
ingerir datos, y para visitar todos los nodos de una lista a partir de uno dado.

Listas enlazadas circulares simples


Cada nodo tiene un enlace, similar al de las listas enlazadas simples, excepto que el siguiente
nodo del ltimo apunta al primero. Como en una lista enlazada simple, los nuevos nodos pueden ser
solo eficientemente insertados despus de uno que ya tengamos referenciado. Por esta razn, es usual

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 4 de 13

quedarse con una referencia solamente al ltimo elemento en una lista enlazada circular simple, esto
nos permite rpidas inserciones al principio, y tambin permite accesos al primer nodo desde el puntero
del ltimo nodo.
Lista Enlazada Doblemente Circular
En una lista enlazada doblemente circular, cada nodo tiene dos enlaces, similares a los de la lista
doblemente enlazada, excepto que el enlace anterior del primer nodo apunta al ltimo y el enlace
siguiente del ltimo nodo, apunta al primero. Como en una lista doblemente enlazada, las inserciones
y eliminaciones pueden ser hechas desde cualquier punto con acceso a algn nodo cercano. Aunque
estructuralmente una lista circular doblemente enlazada no tiene ni principio ni fin, un puntero de acceso
externo puede establecer el nodo apuntado que est en la cabeza o al nodo cola, y as mantener el
orden tan bien como una lista doblemente enlazada con falsos nodos.
Ejemplo lista enlazada simple.
package listas_enlazadas;
/**
*
* @author Juan
*/
public class Nodo {
// Variable en la cual se va a guardar el valor.
private int valor;
// Variable para enlazar los nodos.
private Nodo siguiente;
/**
* Constructor que inicializamos el valor de las variables.
*/
public void Nodo(){
this.valor = 0;
this.siguiente = null;
}

// Mtodos get y set para los atributos.


public int getValor() {
return valor;
}
public void setValor(int valor) {
this.valor = valor;
}
public Nodo getSiguiente() {
return siguiente;
}
public void setSiguiente(Nodo siguiente) {
this.siguiente = siguiente;

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 5 de 13

}
}

package listas_enlazadas;
/**
*
* @author Juan
*/
public class Lista {
// Puntero que indica el inicio de la lista o conocida tambien
// como cabeza de la lista.
private Nodo inicio;
// Variable para registrar el tamao de la lista.
private int tamanio;
/**
* Constructor por defecto.
*/
public void Lista(){
inicio = null;
tamanio = 0;
}
/**
* Consulta si la lista esta vacia.
* @return true si el primer nodo (inicio), no apunta a otro nodo.
*/
public boolean esVacia(){
return inicio == null;
}
/**
* Consulta cuantos elementos (nodos) tiene la lista.
* @return numero entero entre [0,n] donde n es el numero de elementos
* que contenga la lista.
*/
public int getTamanio(){
return tamanio;
}
/**
* Agrega un nuevo nodo al final de la lista.
* @param valor a agregar.
*/
public void agregarAlFinal(int valor){
// Define un nuevo nodo.
Nodo nuevo = new Nodo();
// Agrega al valor al nodo.
nuevo.setValor(valor);
// Consulta si la lista esta vacia.
if (esVacia()) {
// Inicializa la lista agregando como inicio al nuevo nodo.
inicio = nuevo;
// Caso contrario recorre la lista hasta llegar al ultimo nodo

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 6 de 13

//y agrega el nuevo.


} else{
// Crea una copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al ultimo nodo.
while(aux.getSiguiente() != null){
aux = aux.getSiguiente();
}
// Agrega el nuevo nodo al final de la lista.
aux.setSiguiente(nuevo);
}
// Incrementa el contador de tamao de la lista
tamanio++;
}
/**
* Agrega un nuevo nodo al inicio de la lista.
* @param valor a agregar.
*/
public void agregarAlInicio(int valor){
// Define un nuevo nodo.
Nodo nuevo = new Nodo();
// Agrega al valor al nodo.
nuevo.setValor(valor);
// Consulta si la lista esta vacia.
if (esVacia()) {
// Inicializa la lista agregando como inicio al nuevo nodo.
inicio = nuevo;
// Caso contrario va agregando los nodos al inicio de la lista.
} else{
// Une el nuevo nodo con la lista existente.
nuevo.setSiguiente(inicio);
// Renombra al nuevo nodo como el inicio de la lista.
inicio = nuevo;
}
// Incrementa el contador de tamao de la lista.
tamanio++;
}
/**
* Inserta un nuevo nodo despues de otro, ubicado por el valor que contiene.
* @param referencia valor del nodo anterior al nuevo nodo a insertar.
* @param valor del nodo a insertar.
*/
public void insertarPorReferencia(int referencia, int valor){
// Define un nuevo nodo.
Nodo nuevo = new Nodo();
// Agrega al valor al nodo.
nuevo.setValor(valor);
// Verifica si la lista contiene elementos
if (!esVacia()) {
// Consulta si el valor existe en la lista.
if (buscar(referencia)) {
// Crea ua copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al nodo de referencia.

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 7 de 13

while (aux.getValor() != referencia) {


aux = aux.getSiguiente();
}
// Crea un respaldo de la continuacin de la lista.
Nodo siguiente = aux.getSiguiente();
// Enlaza el nuevo nodo despues del nodo de referencia.
aux.setSiguiente(nuevo);
// Une la continuacion de la lista al nuevo nodo.
nuevo.setSiguiente(siguiente);
// Incrementa el contador de tamao de la lista.
tamanio++;
}
}
}
/**
* Inserta un nuevo nodo despues en una posicin determinada.
* @param posicion en la cual se va a insertar el nuevo nodo.
* @param valor valor del nuevo nodo de la lista.
*/
public void insrtarPorPosicion(int posicion, int valor){
// Verifica si la posicin ingresada se encuentre en el rango
// >= 0 y <= que el numero de elementos del la lista.
if(posicion>=0 && posicion<=tamanio){
Nodo nuevo = new Nodo();
nuevo.setValor(valor);
// Consulta si el nuevo nodo a ingresar va al inicio de la lista.
if(posicion == 0){
// Inserta el nuevo nodo al inicio de la lista.
nuevo.setSiguiente(inicio);
inicio = nuevo;
}
else{
// Si el nodo a inserta va al final de la lista.
if(posicion == tamanio){
Nodo aux = inicio;
// Recorre la lista hasta llegar al ultimo nodo.
while(aux.getSiguiente() != null){
aux = aux.getSiguiente();
}
// Inserta el nuevo nodo despues de del ultimo.
aux.setSiguiente(nuevo);
}
else{
// Si el nodo a insertar va en el medio de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al nodo anterior
// a la posicion en la cual se insertara el nuevo nodo.
for (int i = 0; i < (posicion-1); i++) {
aux = aux.getSiguiente();
}
// Guarda el nodo siguiente al nodo en la posicin
// en la cual va a insertar el nevo nodo.

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 8 de 13

Nodo siguiente = aux.getSiguiente();


// Inserta el nuevo nodo en la posicin indicada.
aux.setSiguiente(nuevo);
// Une el nuevo nodo con el resto de la lista.
nuevo.setSiguiente(siguiente);
}
}
// Incrementa el contador de tamao de la lista.
tamanio++;
}
}
/**
* Obtiene el valor de un nodo en una determinada posicin.
* @param posicion del nodo que se desea obtener su valor.
* @return un numero entero entre [0,n-1] n = numero de nodos de la lista.
* @throws Exception
*/
public int getValor(int posicion) throws Exception{
// Verifica si la posicin ingresada se encuentre en el rango
// >= 0 y < que el numero de elementos del la lista.
if(posicion>=0 && posicion<tamanio){
// Consulta si la posicion es el inicio de la lista.
if (posicion == 0) {
// Retorna el valor del inicio de la lista.
return inicio.getValor();
}else{
// Crea una copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta la posicin ingresada.
for (int i = 0; i < posicion; i++) {
aux = aux.getSiguiente();
}
// Retorna el valor del nodo.
return aux.getValor();
}
// Crea una excepcin de Posicion inexistente en la lista.
} else {
throw new Exception("Posicion inexistente en la lista.");
}
}
/**
* Busca si existe un valor en la lista.
* @param referencia valor a buscar.
* @return true si existe el valor en la lista.
*/
public boolean buscar(int referencia){
// Crea una copia de la lista.
Nodo aux = inicio;
// Bandera para indicar si el valor existe.
boolean encontrado = false;
// Recorre la lista hasta encontrar el elemento o hasta
// llegar al final de la lista.
while(aux != null && encontrado != true){
// Consulta si el valor del nodo es igual al de referencia.

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 9 de 13

if (referencia == aux.getValor()){
// Canbia el valor de la bandera.
encontrado = true;
}
else{
// Avansa al siguiente. nodo.
aux = aux.getSiguiente();
}
}
// Retorna el resultado de la bandera.
return encontrado;
}
/**
* Consulta la posicin de un elemento en la lista
* @param referencia valor del nodo el cual se desea saber la posicin.
* @return un valor entero entre [0,n] que indica la posicin del nodo.
* @throws Exception
*/
public int getPosicion(int referencia) throws Exception{
// Consulta si el valor existe en la lista.
if (buscar(referencia)) {
// Crea una copia de la lista.
Nodo aux = inicio;
// COntado para almacenar la posicin del nodo.
int cont = 0;
// Recoore la lista hasta llegar al nodo de referencia.
while(referencia != aux.getValor()){
// Incrementa el contador.
cont ++;
// Avansa al siguiente. nodo.
aux = aux.getSiguiente();
}
// Retorna el valor del contador.
return cont;
// Crea una excepcin de Valor inexistente en la lista.
} else {
throw new Exception("Valor inexistente en la lista.");
}
}
/**
* Actualiza el valor de un nodo que se encuentre en la lista ubicado
* por un valor de referencia.
* @param referencia valor del nodo el cual se desea actualizar.
* @param valor nuevo valor para el nodo.
*/
public void editarPorReferencia(int referencia, int valor){
// Consulta si el valor existe en la lista.
if (buscar(referencia)) {
// Crea ua copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al nodo de referencia.
while(aux.getValor() != referencia){
aux = aux.getSiguiente();
}

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 10 de 13

// Actualizamos el valor del nodo


aux.setValor(valor);
}
}
/**
* Actualiza el valor de un nodo que se encuentre en la lista ubicado
* por su posicin.
* @param posicion en la cual se encuentra el nodo a actualizar.
* @param valor nuevo valor para el nodo.
*/
public void editarPorPosicion(int posicion , int valor){
// Verifica si la posicin ingresada se encuentre en el rango
// >= 0 y < que el numero de elementos del la lista.
if(posicion>=0 && posicion<tamanio){
// Consulta si el nodo a eliminar es el primero.
if(posicion == 0){
// Alctualiza el valor delprimer nodo.
inicio.setValor(valor);
}
else{
// En caso que el nodo a eliminar este por el medio
// o sea el ultimo
Nodo aux = inicio;
// Recorre la lista hasta lleger al nodo anterior al eliminar.
for (int i = 0; i < posicion; i++) {
aux = aux.getSiguiente();
}
// Alctualiza el valor del nodo.
aux.setValor(valor);
}
}
}
/**
* Elimina un nodo que se encuentre en la lista ubicado
* por un valor de referencia.
* @param referencia valor del nodo que se desea eliminar.
*/
public void removerPorReferencia(int referencia){
// Consulta si el valor de referencia existe en la lista.
if (buscar(referencia)) {
// Consulta si el nodo a eliminar es el pirmero
if (inicio.getValor() == referencia) {
// El primer nodo apunta al siguiente.
inicio = inicio.getSiguiente();
} else{
// Crea una copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta llegar al nodo anterior
// al de referencia.
while(aux.getSiguiente().getValor() != referencia){
aux = aux.getSiguiente();
}
// Guarda el nodo siguiente del nodo a eliminar.
Nodo siguiente = aux.getSiguiente().getSiguiente();

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 11 de 13

// Enlaza el nodo anterior al de eliminar con el


// sguiente despues de el.
aux.setSiguiente(siguiente);
}
// Disminuye el contador de tamao de la lista.
tamanio--;
}
}
/**
* Elimina un nodo que se encuentre en la lista ubicado
* por su posicin.
* @param posicion en la cual se encuentra el nodo a eliminar.
*/
public void removerPorPosicion(int posicion){
// Verifica si la posicin ingresada se encuentre en el rango
// >= 0 y < que el numero de elementos del la lista.
if(posicion>=0 && posicion<tamanio){
// Consulta si el nodo a eliminar es el primero
if(posicion == 0){
// Elimina el primer nodo apuntando al siguinte.
inicio = inicio.getSiguiente();
}
// En caso que el nodo a eliminar este por el medio
// o sea el ultimo
else{
// Crea una copia de la lista.
Nodo aux = inicio;
// Recorre la lista hasta lleger al nodo anterior al eliminar.
for (int i = 0; i < posicion-1; i++) {
aux = aux.getSiguiente();
}
// Guarda el nodo siguiente al nodo a eliminar.
Nodo siguiente = aux.getSiguiente();
// Elimina la referencia del nodo apuntando al nodo siguiente.
aux.setSiguiente(siguiente.getSiguiente());
}
// Disminuye el contador de tamao de la lista.
tamanio--;
}
}
/**
* Elimina la lista
*/
public void eliminar(){
// Elimina el valor y la referencia a los demas nodos.
inicio = null;
// Reinicia el contador de tamao de la lista a 0.
tamanio = 0;
}
/**
* Mustra en pantalla los elementos de la lista.
*/
public void listar(){
// Verifica si la lista contiene elementoa.

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 12 de 13

if (!esVacia()) {
// Crea una copia de la lista.
Nodo aux = inicio;
// Posicion de los elementos de la lista.
int i = 0;
// Recorre la lista hasta el final.
while(aux != null){
// Imprime en pantalla el valor del nodo.
System.out.print(i + ".[ " + aux.getValor() + " ]" + " ->
// Avanza al siguiente nodo.
aux = aux.getSiguiente();
// Incrementa el contador de la posicin.
i++;
}
}

");

}
}

package listas_enlazadas;
/**
*
* @author Juan
*/
public class Listas_enlazadas {

public static void main(String[] args) throws Exception {


Lista lista = new Lista();
System.out.println("<<-- Ejemplo de lista simple -->>\n");
// Agregar al final de la lista
lista.agregarAlFinal(12);
lista.agregarAlFinal(15);
lista.agregarAlFinal(9);
// Agregar in inicio de la lista
lista.agregarAlInicio(41);
lista.agregarAlInicio(6);
System.out.println("<<-- Lista -->>");
lista.listar();
System.out.println("\n\n<<-- Tamao -->");
System.out.println(lista.getTamanio());
System.out.println("\n<<-- Obtener el valor del nodo en la pos 3 -->>");
System.out.println(lista.getValor(3));
System.out.println("\nInserta un nodo con valor 16 despues del 15");
//lista.insertarPorReferencia(15, 16);

Tipos de Datos Abstractos

UNIVERSIDAD MARIANO GALVEZ - Programacin 2 Java - Seccin B


Segundo Semestre Ao 2016 - Ing. Juan Carlos Mndez N.

Pgina 13 de 13

lista.insertarPorReferencia(41, 5);
lista.listar();
System.out.print(" | Tamao: ");
System.out.println(lista.getTamanio());
System.out.println("\n\nInserta un nodo con valor 44 en la posicin 3");
lista.insrtarPorPosicion(3, 44);
lista.listar();
System.out.print(" | Tamao: ");
System.out.println(lista.getTamanio());
System.out.println("\nActualiza el valor 12 del tercer nodo por 13");
lista.editarPorReferencia(12, 13);
lista.listar();
System.out.print(" | Tamao: ");
System.out.println(lista.getTamanio());
System.out.println("\nActualiza el valor nodo en la posicin 0 por 17");
lista.editarPorPosicion(0, 17);
lista.listar();
System.out.print(" | Tamao: ");
System.out.println(lista.getTamanio());
System.out.println("\nElimina el nodo con el valor 41");
lista.removerPorReferencia(41);
lista.listar();
System.out.print(" | Tamao: ");
System.out.println(lista.getTamanio());
System.out.println("\nElimina el nodo en la posicin 4");
lista.removerPorPosicion(4);
lista.listar();
System.out.print(" | Tamao: ");
System.out.println(lista.getTamanio());
System.out.println("\nConsulta si existe el valor 30");
System.out.println(lista.buscar(30));
System.out.println("\nConsulta la posicion del valor 9");
System.out.println(lista.getPosicion(9));
System.out.println("\nElimina la lista");
lista.eliminar();
System.out.println("\nConsulta si la lista est vacia");
System.out.println(lista.esVacia());
System.out.println("\n\n<<-- Fin de ejemplo lista simple -->>");
}
}

Vous aimerez peut-être aussi