No puedo lograr que mi implementación de LinkedList simple se agregue al final.
Para explicarlo, lo que estoy intentando es agregar una Persona al final de la lista enlazada. Pero no puedo hacerlo debido a una excepción que se arroja en la línea: if(current.Next == null)
La excepción es:
“System.NullReferenceException: ‘Referencia a objeto no establecida como instancia de un objeto.'”
Aquí está el código:
public void Insert(Persona p)
{
Nodo aInsertar = new Nodo();
aInsertar.Dato = p;
if(count == 0)
{
cabeza = new Nodo();
cabeza.Dato = p;
cabeza.Siguiente = null;
}
else
{
Nodo actual = new Nodo();
actual = cabeza.Siguiente;
if(actual == null)
{
cabeza.Siguiente = aInsertar;
}
else
{
do
{
actual = actual.Siguiente;
if(actual.Siguiente == null)
{
actual = aInsertar;
break;
}
} while (actual.Siguiente != null);
}
}
count++;
}
Si alguien pudiera ayudarme, explicando quizás por qué mi código no tiene sentido y por qué recibo la excepción. Saludos.
davy.ai
Parece que el problema está en la línea
current = head.Next;
donde estás estableciendocurrent
comonull
porquehead.Next
esnull
. Esto significa quecurrent
se convierte ennull
y la declaraciónif(current.Next == null)
causa laNullReferenceException
ya quecurrent
esnull
y no tiene una propiedadNext
.Para solucionar esto, necesitas establecer
current
comohead
en lugar dehead.Next
ya quehead
siempre es el primer elemento de la lista enlazada. Así que reemplaza la líneacurrent = head.Next;
concurrent = head;
.Además, en el bucle
do-while
, necesitas establecercurrent.Next
como el nuevo nodotoBeInserted
en lugar de establecercurrent
comotoBeInserted
. Así que reemplaza la líneacurrent = toBeInserted;
concurrent.Next = toBeInserted;
.El código actualizado debería verse así:
Esto debería insertar correctamente el nuevo nodo al final de la lista enlazada.