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?.