11.07.2015 Views

programmer-en-langage-c

programmer-en-langage-c

programmer-en-langage-c

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Programmer <strong>en</strong> <strong>langage</strong> CIci, nous avons décidé de faire effectuer la création de la liste par une fonction. Le programmeprincipal se cont<strong>en</strong>te de réserver l’emplacem<strong>en</strong>t d’un pointeur destiné à désigner le premierélém<strong>en</strong>t de la liste. Sa valeur effective sera fournie par la fonction creation. Dans cesconditions, il est nécessaire que le programme principal lui fournisse, non pas la valeur,mais l’adresse de ce pointeur (du moins si l’on souhaite pouvoir disposer ultérieurem<strong>en</strong>t decette valeur au sein du programme principal).C’est ce qui justifie la forme de l’<strong>en</strong>-tête de la fonction creation :void creation (struct elem<strong>en</strong>t * * adeb)dans laquelle adeb est effectivem<strong>en</strong>t du type « pointeur sur un pointeur sur un élém<strong>en</strong>t de typestruct elem<strong>en</strong>t ».Création d’une liste chaînée#include #include struct elem<strong>en</strong>t { int num ;float x ;float y ;struct elem<strong>en</strong>t * suivant ;} ;void creation (struct elem<strong>en</strong>t * * adeb) ;main(){struct elem<strong>en</strong>t * debut ;creation (&debut) ;}void creation (struct elem<strong>en</strong>t * * adeb){int num ;float x, y ;struct elem<strong>en</strong>t * courant ;* adeb = NULL ;while ( printf("numéro x y : "),scanf ("%d %f %f", &num, &x, &y), num){ courant = (struct elem<strong>en</strong>t *) malloc (sizeof(struct elem<strong>en</strong>t)) ;courant -> num = num ;courant -> x = x ;courant -> y = y ;courant -> suivant = * adeb ;* adeb = courant ;}}202 © Éditions Eyrolles

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!