Ejercicio 16.8.1. Agregar a la clase ListaEnlazada
un método
next
que vaya devolviendo uno a uno cada elemento de la lista, desde
el primero hasta el último. Al llegar al final de la lista debe
levantar una excepción de la clase StopIteration
. Para el correcto
funcionamiento de este método, ¿es necesario agregar un atributo
adicional a la clase?
Ejercicio 16.8.2. Utilizando el método next del ejercicio
anterior, redefinir el método __str__
de ListaEnlazada
, para que
se genere una salida legible de lo que contiene la lista, similar a
las listas de python. Nota: este método debe devolver una cadena, no imprimirla por pantalla.
Ejercicio 16.8.3. Agregar a ListaEnlazada
un método extend
que
reciba una ListaEnlazada
y agregue a la lista actual los elementos
que se encuentran en la lista recibida.
Ejercicio 16.8.4. Una lista circular es una lista cuyo último nodo está ligado al primero, de modo que es posible recorrerla infinitamente.
Escribir la clase ListaCircular
, incluyendo los métodos insert
,
append
, remove
y pop
.
Ejercicio 16.8.5. Una lista doblemente enlazada es una lista en la cual cada nodo tiene una referencia al anterior además de al próximo de modo que es posible recorrerla en ambas direcciones.
Escribir la clase ListaDobleEnlazada
, incluyendo los métodos insert
,
append
, remove
y pop
.
Ejercicio 16.8.6. Escribir un método de la clase ListaEnlazada
que invierta el orden de la lista (es decir, el primer elemento queda
como último y viceversa, y se invierte la dirección de todos los
enlaces). Nota: operar directamente sobre los elementos de la lista.