diff --git a/relations.c b/relations.c index 11338543ef1c7ff9458559b429245666b1556d8a..d98716437bcb85efb3a911b165299e22fa18cd49 100644 --- a/relations.c +++ b/relations.c @@ -85,14 +85,18 @@ listeg adjtete(listeg lst, void *x){ return new; } listeg adjqueue(listeg lst, void *x){ - listeg copy = lst; - while(copy->suiv != NULL){ - copy = copy->suiv; - } listeg new = malloc(sizeof(struct s_node)); new->val = x; new->suiv = NULL; - copy->suiv = new; + if( lst != NULL ){ + listeg copy = lst; + while(copy->suiv != NULL){ + copy = copy->suiv; + } + copy->suiv = new; + }else{ + return new; + } return lst; } listeg suptete(listeg lst){ @@ -124,6 +128,7 @@ void detruire(listeg lst){ return; if(lst->suiv != NULL){ free(lst); + return; } listeg copy = lst; while(copy != NULL){ @@ -273,7 +278,24 @@ int main(){ est_lien_connaissance(CONNAIT), est_lien_connaissance(COLLEGUE)); listeg liste = listegnouv(); - //liste = adjqueue(liste, ) + int x5 = 5, x4 = 4, x19 = 19, x3 = 3, x33 = 33; + int *px5, *px4, *px19, *px3, *px33; + px5 = &x5; px4 = &x4; px19 = &x19; px3 = &x3; px33 = &x33; + int x0 = 0; int* px0 = &x0; + liste = adjqueue(liste, &px5); + liste = adjtete(liste, &px4); + liste = adjqueue(liste, &px19); + liste = adjtete(liste, &px3); + liste = adjqueue(liste, &px33); + liste = adjtete(liste, &px0); + liste = suptete(liste); + listeg copy = liste; + for(int i=0; i<4; i++){ + printf("liste->val == %d \n", **(int**)copy->val); + copy = copy->suiv; + } + printf("tete(liste) == %d \n", **(int**)tete(liste)); + detruire(liste); return 0;