| les listes chainés en C | |
|
|
Auteur | Message |
---|
Admin Administrateur
Nombre de messages : 232 Age : 36 Localisation : A COTé 2MON PC Loisirs : KUNG FU Date d'inscription : 05/03/2007
| Sujet: les listes chainés en C Dim 30 Déc - 0:30 | |
| | |
|
| |
nadia soldat
Nombre de messages : 14 Age : 38 Localisation : chlef Loisirs : informatique Date d'inscription : 28/03/2007
| Sujet: Re: les listes chainés en C Jeu 10 Jan - 22:25 | |
| peace be upen you dans cet exemple : void Push(pile *p, int Val) { pile *element = malloc(sizeof(pile)); if(!element) exit(1); element->valeur = Val; element->prec = *p; *p = element; } j ai pas compris l' interet de (if(!element) exit(1); ) que signifie ça | |
|
| |
Benayada Houari Administrateur
Nombre de messages : 89 Age : 37 Localisation : Chlef Loisirs : Sport Date d'inscription : 14/03/2007
| Sujet: Re: les listes chainés en C Jeu 10 Jan - 22:39 | |
| Peace be open you Nadia... Pour ta question Nadia: certain temp quand on fait l'allocation dynamique par la fonction malloc, le S.E n'accepte pas ça (cad il ne nous donne pas une case mémoire pour l'utiliser), et ça se fait à cause de: peut etre que la mémoire est pleine utlisée, et il y a plus d'un espace libre... Alors dans cette situation la fonction malloc ne renvoit pas une adresse, mais plutot une NULL , cad la fonction malloc n'a pas réussi en l'allocation d'une espace mémoire (faute de mémoire pleine etc...), et c'est ça prkoi il font le test - Code:
-
if (!element)
et c'est équivalent à - Code:
-
if (element==NULL)
cad si la valeur booleen entre les parenthese est fausse, cad si le pointeur contient NULL alors - Code:
-
exit(-1);
cette instruction fait sortir completement le programme avec une erreur... c'est pour ça il faut tjrs teste la fonction malloc à chaque fois on l'utilise, pour valider s'il a réussi dans l'allocation ou non... | |
|
| |
nadia soldat
Nombre de messages : 14 Age : 38 Localisation : chlef Loisirs : informatique Date d'inscription : 28/03/2007
| Sujet: Re: les listes chainés en C Jeu 10 Jan - 22:59 | |
| thanks a lot mais j ai trouvée aussi une autre expression int Length(elt*p) { int n= 0; while(p) /*le probleme est ici*/ { n++; p = p->suiv; } return n; } dans ce cas normalement en fait while(p !=NULL) { n++; p = p->prec; } return n; est ce que c'est la meme chose ? | |
|
| |
Benayada Houari Administrateur
Nombre de messages : 89 Age : 37 Localisation : Chlef Loisirs : Sport Date d'inscription : 14/03/2007
| Sujet: Re: les listes chainés en C Jeu 10 Jan - 23:21 | |
| Oui Nadia c'est la meme chose... On a dit que l'expression - Code:
-
while ( )
prend entre ses parenthèses une expression booléen, cad le résultat qui doit sortir des parenthèses doit etre booléen(VRAI ou FAUX)... et on sit que que la valeur qui signifie FAUX est uniquement le 0, à part ça, n'importe quelle autre valeur signifie VRAI... alors tant que la valeur entre parenthèse n'est pas 0, le résultat signifie dans ce cas VRAI et la boucle tourne normal, une fois la valeur entre parenthèse devient 0, le résulltat est FAUX, et la boucle sort.... | |
|
| |
nadia soldat
Nombre de messages : 14 Age : 38 Localisation : chlef Loisirs : informatique Date d'inscription : 28/03/2007
| Sujet: Re: les listes chainés en C Jeu 10 Jan - 23:35 | |
| vouz avez dit que une fois la valeur entre parenthèse devient 0, le résulltat est FAUX, et la boucle sort....mais p est un pointeur il prend soit la valeur NULL soit une autre adresse,puisque il se peut que p pointe vers la premiére case de la memoire (si p==0)? et il se peut que p n egale jamais 0 ? please | |
|
| |
Benayada Houari Administrateur
Nombre de messages : 89 Age : 37 Localisation : Chlef Loisirs : Sport Date d'inscription : 14/03/2007
| Sujet: Re: les listes chainés en C Jeu 10 Jan - 23:53 | |
| Non Nadia... le cas ce que tu parle, cad le cas ou l'expression booléen donne FAUX ou VRAI est dépend à la nature du type de variable, et dans le type de variable int oui c'est de 0 qui donne la valeur FAUX...( il faut ramarquer que je parle de 0 booléen et pas le 0 numérique) Mais dans le cas de pointeurs ( les pointeurs sont des variables particulieres)n'est pas la valeur 0 qui donne FAUX, mais la valeur NULL qui donne le FAUX,... Alors les pointeurs sont considérées comme une adresse(numéro quelconque et ça contient le 0 numérique) et ça se donne VRAI , ou NULL et ça se donne FAUX Donc le 0 est une adresse mémoire valide(VRAI), et ce n'est pas FAUX | |
|
| |
nadia soldat
Nombre de messages : 14 Age : 38 Localisation : chlef Loisirs : informatique Date d'inscription : 28/03/2007
| Sujet: Re: les listes chainés en C Ven 11 Jan - 0:13 | |
| AHHHHH sayer j ai compris merci. | |
|
| |
Benayada Houari Administrateur
Nombre de messages : 89 Age : 37 Localisation : Chlef Loisirs : Sport Date d'inscription : 14/03/2007
| Sujet: Re: les listes chainés en C Ven 11 Jan - 0:14 | |
| | |
|
| |
Contenu sponsorisé
| Sujet: Re: les listes chainés en C | |
| |
|
| |
| les listes chainés en C | |
|