Page 310

4.8 Listas con enlace doble 3. Hacemos que nuevo->sig sea aux : aux lista

ant

info

sig

ant

3

info

sig

ant

info

ant

nuevo

sig

2

8

info

sig

1

4. Hacemos que nuevo->ant sea aux ->ant: aux lista

ant

info

sig

ant

3

info

sig

ant

info

8

ant

nuevo

sig

2

info

sig

1

5. Ojo con este paso, que es complicado. Hacemos que el anterior a aux tenga como siguiente a nuevo, es decir, aux ->ant->sig = nuevo: aux lista

ant

info

sig

ant

3

info

sig

ant

info

8

ant

nuevo

sig

2

info

sig

1

6. Y ya s´ olo resta que el anterior a aux sea nuevo con la asignaci´on aux ->ant = nuevo: aux lista

ant

info

sig

ant

3

info

sig

ant

info

nuevo

sig

2

8

ant

info

sig

1

Ahora que tenemos claro el procedimiento, podemos escribir la funci´on: lista doble.c 1 2 3 4

TipoDLista inserta_en_posicion(TipoDLista lista, int pos, int valor ) { struct DNodo * aux , * nuevo; int i;

5 6 7 8 9 10

/* Caso especial: lista vac´ıa */ if (lista == NULL) { lista = inserta_por_cabeza(lista, valor ); return lista; }

11 12 13 14 15 16

/* Inserci´ on en cabeza en lista no vac´ıa. */ if (pos <= 0) { lista = inserta_por_cabeza(lista, valor ); return lista; }

17

304

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