Cita de: Noporfavor en Agosto 17, 2016, 06:54:51 PM
reco.sig = nuevo;
El campo sig del nodo [3, 30] apunta a [2, 15].
reco referencia al nodo [1, 10].
En main tienes lo siguiente
ListaGenerica lg = new ListaGenerica();
lg.Insertar (1, 10);
lg.Insertar (2, 20);
lg.Insertar (3, 30);
lg.Insertar (2, 15);
.
.
.
La instancia de tipo ListaGenerica almacenará los nodos de la siguiente forma
+------------+ +-------------+ +------------+
| | | | | |
null<-----+nodo [3, 30]<----+ nodo [2, 20]<-----+nodo [1, 10]|
| | | | | |
+------------+ +-------------+ ^ +------------+
|
|
|
|
+
campo sig
Al ejecutar
lg.Insertar(2, 15);, se crea un nuevo nodo y el mismo se coloca entre el nodo [1, 10] y el nodo [2, 20]. Observa como se ejecuta el siguiente bloque:
{
Nodo reco = raiz; // (1)
for (int f = 1; f <= pos - 2; f++) // (2)
reco = reco.sig;
Nodo siguiente = reco.sig; // (3)
reco.sig = nuevo; // (4)
nuevo.sig = siguiente; // (5)
}
(1)
reco referencia a la misma instancia a la que referencia
raiz. En este punto la instancia es el nodo [1, 10] el cual en su campo sig referencia al nodo [2, 20].
(2) la sentencia asociada al bucle no se ejecuta
(3)
siguiente referencia a la misma instancia a la que referencia el campo
sig de la instancia referenciada por
reco. En este momento
sig referencia al nodo [2, 20].
(4) ahora el campo
sig del nodo [1, 10] referencia al nuevo nodo, osea el nodo [2, 15].
(5) ahora el campo
sig del nuevo nodo [2, 15] referencia al nodo [2, 20].
Saludos