Tratando de diagramar lo que sucede en la función "doIt" (está completa abajo) me encuentro con una duda puntual a la hora de realizar una comparación.
Duda: Luego de obtener el último nodo y asignarlo al puntero aux. Veo la siguiente comparación:
if(aux == lista)
Por un lado: ¿Compara aux -> info y lista -> info?¿Por qué estoy comparando?
Por el otro, luego de
aux = obtenerUltimo(lista);
¿el diagrama sería así?
Como comentario adicional "obtenerUltimo" retorna el último nodo de la lista. y la estructura del nodo sería:
struct Nodo
{
int info;
Nodo *sgte;
};
La función completa:
int doIt(Nodo *&lista)
{
int elemento;
Nodo *aux; Nodo *aux2;
if(lista)
{
aux = obtenerUltimo(lista);
if(aux == lista) // Duda
{
elemento = lista -> info;
delete lista;
lista = NULL;
return elemento;
}
else
{
aux2 = lista;
while(aux2->sgte != aux)
aux2 = aux2->sgte;
elemento = aux -> info;
delete aux;
aux -> sgte = NULL;
return elemento;
}
}
else
{
cout << "Error: vacia" << endl;
return 0;
}
}