Buenas,
Estoy teniendo un problema con mi código y no encuentro el error. Mi programa inserta correctamente después del nodo actual, pero no logro que al salir de la función el nodo actual sea el nuevo nodo insertado. Si embargo, dentro de la función, justo antes de salir, se verifica que el nodo actual está apuntando al nuevo nodo. La lista es pasada por referencia. Adjunto imagen del resultado de correr el programa y del código.
Como se puede ver, luego de insertar el primer elemento la lista es correcta y el actual apunta al único nodo. Luego de insertar el segundo elemento, este se inserta en el lugar correcto, y aunque dentro de la función la salida es que el nodo actual es el nodo insertado, al llamar a la función element se ve que fuera de la función el nodo actual no fue actualizado. A partir de ahí, todos los nodos se insertan luego de ese primer nodo, ya que nodo actual siempre apunta a él al salir de la función.
Mi código es el siguiente:
Por lo que veo es esencialmente igual al del video de la resolución, con la diferencia de que mi implementación de null() crea un nuevo cabezal y deja sus dos punteros en NULL, lo que cambia algún detalle de la función insert.
El código de principal donde llamo a las funciones es el siguiente (no creo que sea relevante, pero por las dudas):
Agradezco alguna ayuda para encontrar el error. Dejo los códigos en texto por acá abajo:
void insert(int x, lista &l) { nodo * nuevo_nodo = new nodo; nuevo_nodo->elem = x; nuevo_nodo->sig = NULL; //si la lista es vacia inserto al principio if (l->primero == NULL) { l->primero = nuevo_nodo; } //si no es vacia inserto despues del nodo actual else { nuevo_nodo->sig = l->actual->sig; l->actual->sig = nuevo_nodo; } //nodo actual pasa a ser el recien insertado l->actual = nuevo_nodo; printf("Actual despues de insertar: %d\n", l->actual->elem ); } int element(lista l) { return l->actual->elem; }