Page 265

4 Estructuras de datos: memoria din´amica

CC 2003, 2008 Andr´ es Marzal e Isabel Gracia

info

lista

sig

info

sig

info

x

x

x

1.1

0.2

3.7

y

y

y

7.1

0.1

2.1

sig

Cualquiera de las dos opciones es v´alida, si bien la segunda es m´as elegante. Volvamos al estudio de nuestra lista de enteros. Creemos ahora el ((puntero maestro)), aqu´el en el que empieza la lista de enteros: 1 2 3

int main(void) { struct Nodo * lista;

4 5

...

No es m´as que un puntero a un elemento de tipo struct Nodo. Inicialmente, la lista est´a vac´ıa. Hemos de indicarlo expl´ıcitamente as´ı: 1 2 3

int main(void) { struct Nodo * lista = NULL ;

4 5

...

Tenemos ahora esta situaci´ on: lista O sea, lista no contiene nada, est´ a vac´ıa.

4.5.2.

Adici´ on de nodos (por cabeza)

Empezaremos a˜ nadiendo un nodo a la lista. Nuestro objetivo es pasar de la lista anterior a esta otra: info

lista

sig

8

¿C´omo creamos el nuevo registro? Con malloc: 1 2 3

int main(void) { struct Nodo * lista = NULL;

4 5 6

lista = malloc( sizeof (struct Nodo) ) ; ...

´ Este es el resultado: lista

info

sig

Ya tenemos el primer nodo de la lista, pero sus campos a´ un no tienen los valores que deben tener finalmente. Lo hemos representado gr´aficamente dejando el campo info en blanco y sin poner una flecha que salga del campo sig. Por una parte, el campo info deber´ıa contener el valor 8, y por otra, el campo sig deber´ıa apuntar a NULL: 1 2 3

int main(void) { struct Nodo * lista = NULL;

4 5 6 7 8

lista = malloc( sizeof (struct Nodo) ); lista->info = 8 ; lista->sig = NULL ; ...

Introducci´ on a la Programaci´ on con C

259

Profile for esLibre.com

Introducción a la programación con c  

Introducción a la programación con c  

Advertisement