3.2.1 Creacion e inserción.

 

Inserción de un elemento al comienzo de la lista

 

Supongamos una lista lineal referenciada por p. Para insertar un elemento al principio de la lista, primero se crea el elemento y después se reasignan las referencias como se indica a continuación:

 

q=new Nodo;

             p                          q

 

 

 


        

                                                                                                 nulo

 

q->dato=n;           // Asignación de valores

a->siguiente=p;   // reasignación de punteros

p=q;

 

El orden en el que se realizan estas operaciones es esencial.

                                   q

              p

            

 

 

 

 Esta operación básica nos sugiere como crear una lista. Para ello, y partiendo de una lista vacía, no tenemos mas que repetir la operación de insertar un elemento al comienzo de una lista, tantas veces como elementos deseen que tenga dicha lista.

 

// Crear una lista lineal simplemente enlazada

 int main ( )

{

  Nodo *p=0, *q=0;     //punteros

  int n=0;

 // Crear una lista de enteros

cout<<”Introducir datos. Finalizar con ctrl.+z. \n”;

cout<<”dato: ”;

while (leerDato(n))

 {

  q=new Nodo;

  q->datos=n;

  q->siguiente=p;

  p=q;

  cout<<”Dato: “;

 }

}

 

 

*Inserción de un elemento en general

 

La inserción de un elemento en la lista, a continuación de otro elemento cualquiera apuntado por r:

               

q=new Nodo;

q->dato=x;          //valor insertado

q->siguiente= r->siguiente;

r->siguiente=q;

 

La inserción de un elemento en la lista entes de otro elemento apuntado por r, se hace insertando un nuevo elemento detrás del elemento apuntado por r, intercambiando previamente los valores del nuevo elemento y del elemento apuntado por r.

 

q=new Nodo;

*q=*r;                    // Copiar miembro a miembro un objeto en otro

r->dato= x;            //valor insertado

r->siguiente=q;