Page 312

4.8 Listas con enlace doble 3. Ahora hacemos que el que antecede al siguiente de aux sea el anterior a aux . Es decir, aux ->sig->ant=aux ->ant: aux lista

ant

info

sig

ant

3

info

sig

ant

info

sig

2

8

4. Y ya podemos liberar la memoria ocupada por el nodo apuntado con aux : aux lista

ant

info

sig

ant

info

3

sig

2

Hemos de ser cautos. Hay un par de casos especiales que merecen ser tratados aparte: el borrado del primer nodo y el borrado del u ´ltimo nodo. Veamos c´omo proceder en el primer caso: tratemos de borrar el nodo de valor 3 en la lista del ejemplo anterior. 1. Una vez apuntado el nodo por aux , sabemos que es el primero porque apunta al mismo nodo que lista: aux lista

ant

info

sig

ant

3

info

sig

ant

info

8

sig

2

2. Hacemos que el segundo nodo deje de tener antecesor, es decir, que el puntero aux ->sig->ant valga NULL (que, por otra parte, es lo mismo que hacer aux ->sig->ant=aux ->ant): aux lista

ant

info

sig

ant

3

info

sig

ant

info

8

sig

2

3. Ahora hacemos que lista pase a apuntar al segundo nodo (lista=aux ->sig): aux lista

ant

info

sig

ant

3

info

sig

ant

info

8

sig

2

4. Y por fin, podemos liberar al nodo apuntado por aux (free(aux )): aux lista

ant

info

sig

ant

info

8

sig

2

Vamos a por el caso en que borramos el u ´ltimo elemento de la lista: 1. Empezamos por localizarlo con aux y detectamos que efectivamente es el u ´ltimo porque aux ->sig es NULL: 306

Introducci´ on a la Programaci´ on con C

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement