Creando una lista enlazada mediante la entrada de datos.
Estoy tratando de obtener una LinkedList a partir de la entrada del usuario y todo funciona bien, pero no entiendo por qué. En el bucle while, constantemente estoy estableciendo ‘last’ como la entrada más reciente de num. Pero nunca actualizo ‘n1’ fuera del bucle, ¿entonces cómo sigue funcionando? ¿Cuándo se actualiza n1 y se guarda num?
“`csharp
public static Node<int> BuildList()
{
Console.WriteLine("Ingrese el número: -999 para finalizar");
int num = int.Parse(Console.ReadLine());
Node<int> n1 = new Node<int>(num);
if (num != -999)
{
Node<int> last = n1;
Console.WriteLine("Ingrese el número: -999 para finalizar");
num = int.Parse(Console.ReadLine());
Console.WriteLine("Si de nuevo");
<pre><code> while (num != -999)
{
last.SetNext(new Node<int>(num));
last = last.GetNext();
Console.WriteLine("Ingrese el número: -999 para finalizar");
num = int.Parse(Console.ReadLine());
}
}
return n1;
</code></pre>
}
“`
davy.ai
El código crea un nuevo nodo
n1
utilizando el primer valor de entrada del usuarionum
. Luego, establecelast
comon1
. Dentro del bucle while, se crea un nuevo nodonewNode
utilizando el nuevo valor de entrada del usuarionum
. El métodoSetNext()
establece el siguiente nodo delast
comonewNode
y luego actualizalast
para que sea el nuevo nodonewNode
en sí mismo.De esta manera,
last
siempre apunta al nodo anterior en la lista enlazada ynewNode
es el nuevo nodo que se agrega a la lista enlazada.n1
sigue siendo el primer nodo en la lista enlazada y su valor nunca se actualiza.A medida que el bucle while continúa ejecutándose, se agregan nuevos nodos a la lista enlazada actualizando el nodo
last
para que apunte al nuevo nodo, hasta que el usuario termine el bucle al ingresar-999
.Entonces, en resumen,
n1
es el primer nodo en la lista enlazada,last
es el último nodo en la lista enlazada, y se agregan nuevos nodos a la lista enlazada actualizandolast
para que apunte al nuevo nodo.