Page 307

4 Estructuras de datos: memoria din´amica

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

1. Empezamos pidiendo memoria para un nuevo nodo: nuevo lista

ant

info

sig

ant

info

sig

ant

info

8

sig

2

2. Asignamos el valor que nos indiquen al campo info: nuevo lista

ant

info

sig

3 ant

info

sig

ant

info

8

sig

2

3. Ajustamos sus punteros ant y sig: nuevo lista

ant

info

sig

3 ant

info

sig

ant

info

8

sig

2

4. Ajustamos el puntero ant del que hasta ahora ocupaba la cabeza: nuevo lista

ant

info

sig

3 ant

info

sig

ant

info

8

sig

2

5. Y, finalmente, hacemos que lista apunte al nuevo nodo: nuevo lista

ant

info

sig

3 ant

info

sig

ant

info

8

sig

2

El caso de la inserci´ on en la lista vac´ıa es trivial: se pide memoria para un nuevo nodo cuyos punteros ant y sig se ponen a NULL y hacemos que la cabeza apunte a dicho nodo. Aqu´ı tienes la funci´ on que codifica el m´etodo descrito. Hemos factorizado y dispuesto al principio los elementos comunes al caso general y al de la lista vac´ıa: lista doble.c 1 2 3

TipoDLista inserta_por_cabeza(TipoDLista lista, int valor ) { struct DNodo * nuevo;

4

nuevo = malloc(sizeof (struct DNodo)); nuevo->info = valor ; nuevo->ant = NULL; nuevo->sig = lista;

5 6 7 8 9

if (lista != NULL) lista->ant = nuevo;

10 11 12

lista = nuevo; return lista;

13 14 15

}

Introducci´ on a la Programaci´ on con C

301

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement