[C] Listes chaînées + malloc

Fermé
oliver91 Messages postés 51 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 9 septembre 2009 - 8 juin 2007 à 21:51
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 - 12 juin 2007 à 08:08
Bonsoir,

J'aimerai comprendre l'interet, l'utilité des "malloc" lors des listes chaînées ...

Puis si quelqu'un se sent d'attaque pour m'expliquer clairement le fonctionnement des malloc los des listes chaînées ...

Concernant les algos d'insersion, suppression ... je vais essayer à partir de ce que vous allez me dire de me débrouiller ...

En vous remerciant d'avance,
Bonne soirée,


Olivier.

5 réponses

ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
8 juin 2007 à 23:34
Bonjour,

On utilise malloc pour une allocation dynamique (après compilation). Concrètement c'est quand tu veux reserver de l'espace mémoire, mais que tu ne sais pas combien à l'étape de la compilation.
Exemple :
variable a : est demandé à l'utilisateur pour savoir combien d'espace il veut réserver
Si tu fait :
int espace[a]; /* Interdit, a doit être une constante non modifiable après la compilation */
--------
int *espace;
espace = (int*)malloc(sizeof(int)*a); /* Ok : la mémoire est allouée en RAM */
/* Traitement */
free(espace); /* Ne pas oublier de libérer la mémoire */

Dans le cas de liste chainée, tu ne sais pas à l'avance combien tu dois en réserver. Ce nombre varie selon les exécutions.
2
dubcek Messages postés 18753 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 7 novembre 2024 5 619
11 juin 2007 à 15:24
Bonne explication là: cliste
1
oliver91 Messages postés 51 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 9 septembre 2009 3
11 juin 2007 à 14:52
Mais alors comment faire si j'ai une liste chaînée de nom de fichiers (dont je ne sais pas combien j'en ai ...) ??

De plus, l'utilisateur doit pouvoir supprimer (n'importe lequel des noms de fichier) ou rajouter (à la fin) ...
... comment faire pour cela ?


Merci d'avance de votre aide.


Olive.
0
oliver91 Messages postés 51 Date d'inscription lundi 21 mai 2007 Statut Membre Dernière intervention 9 septembre 2009 3
11 juin 2007 à 23:06
Désolé mais je n'ai pas trouvé que ce tuto reponde vraiment bien à ma demande ...

En tout cas, les noms de fichiers sont à resaissir à chaque lancement du prog ... n'ai t il pas possible de les garder en mémoire ?
0
ekra Messages postés 1870 Date d'inscription vendredi 15 avril 2005 Statut Membre Dernière intervention 24 juillet 2014 342
12 juin 2007 à 08:08
Pour cela il faut écrire dans un fichier. C'est la seule méthode de stockage lorsqu'on arrête l'execution d'un programme.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
reddevil Messages postés 61 Date d'inscription vendredi 8 décembre 2006 Statut Membre Dernière intervention 30 août 2008 5
8 juin 2007 à 21:58
malloc sert à allouer de l'espace memoire car en ce qui concerne les listes chainés celles ci sont des noeuds alloués dynamiquent dans la memoire qui facilitent la recherche mieux que les tableaux
en plus leur avantages c kil sont pa gourmands rn memoire juste aprés l'utilisation en utilise un simple free pour liberer l'espace occupé
-1