dimecres, 7 de maig del 2008

Llistes dinàmiques en C


Una de les aplicacions més potents i interessants de l'assignació dinàmica de memòria i els punters en el llenguatge C són les llistes o estructures dinàmiques de dades. Les estructures bàsiques en c i c++ tenen una important limitació: no poden canviar de tamany en temps d'execució, és a dir, si reservem una certa quantitat de memòria per enmagatzemar una sèrie de dades en una matriu o un vector per exemple, el nombre d'elements d'aquesta matriu o vector és decideix en la fase de disseny, abans de que el programa executable sigui creat, per tant no permeten el canvi de tamany en temps d'execució.

Les estructures dinàmiques ens permeten crear estructures de dades que s'adapten a les necessitats reals del nostre programa, reservan l'espai de memòria just i necessari que la nostra aplicació utilitzarà.

Les estructures de dades dinàmiques estàn formades per altres estructures a les quals anomenarem nodes. Aquests nodes o elements agrupan les dades amb les quals el nostre programa treballarà, i a més , un o més punters a la mateixa estructura el qual ens servirà per a desplaçar-nos per tots els nodes o elements que formen la llista.
Un exemple d'estructura bàsica d'un node podria ser el següent:

struct node {
int num;

struct node *seguent;
}


El camp seguent pot apuntar a un node o element de la mateixa llista i així succesivament.
És a dir, cada node o element manté una relació amb el node anterior i amb el següent si aquests existeixen.

Continuarà .....