Ejercicio - Listas enlazadas simples con puntero al último elemento
Vamos a pensar un poco en el siguiente ejercicio:
Listas enlazadas simples con puntero al último elemento
El ejercicio consiste en añadir un atributo last
a las listas enlazadas simples con el fin de tener acceso directo al último elemento de la lista.
Vamos a centrarnos en los métodos push_back
, pop_back
y back
. ¿Habría alguna mejora en el coste asintótico si añadiésemos este atributo last
?
Rellena el siguiente cuestionario:
Vemos que una de las funciones no mejora su coste por el hecho de tener un nuevo atributo last
. El motivo es que, tras borrar el último elemento, tenemos que hacer que last
apunte al elemento anterior, y para ello tenemos que recorrer toda la lista otra vez.
¿Y si la clase ListLinkedSingle
tuviera un puntero last_but_one
que apunte al penúltimo nodo de la lista? Así mejoraría el coste del método pop_back
, llegando a ser constante, ¿no?.