[C] Suppression d'un avl (multiples structures inside)

Suppression d'un avl (multiples structures inside) [C] - C - Programmation

Marsh Posté le 24-02-2004 à 17:08:11    

voila, j'aurais une petite question, meme si je pense connaitre deja la reponse..
j'ai les définitions suivantes pour mon AVL :

Code :
  1. typedef struct note
  2. {
  3.     char *pMatiere;
  4.     int iNote;
  5.     struct note *pSuiv;
  6. }note;
  7. typedef struct eleve
  8. {
  9.     int iNum;
  10. char *pNom;
  11. char *pPrenom;
  12. char *pVille;
  13. char *pTelFixe;
  14. char *pTelCel;
  15. char *pGroupe;
  16. note *pNotesTp;
  17. note *pNotesTd;
  18. }eleve;
  19. typedef struct arbre
  20. {
  21. eleve ePresent;
  22. struct arbre *pSag;
  23. struct arbre *pSad;
  24. int iBal;
  25. }arbre;
  26. typedef arbre *pArbre;


 
Ma question est simple : est-ce que pour supprimer mon arbre, il faut que je libere a chque noeud d'abord les notes (une liste chainée, plus ou moins grande), puis l'eleve (dans ce cas, je dois liberer un par un, le nom, le prenom, etc ??), et enfin, le noeud concerné ?
 
je pense que tout cela est nécessaire, mais je n'en suis pas sur, et surtout, c'est une opération plutot longue !!
merci de votre aide
 
++

Reply

Marsh Posté le 24-02-2004 à 17:08:11   

Reply

Marsh Posté le 24-02-2004 à 17:34:28    

J'aurais une autre question en rapport avec le meme projet, et les structures en question :
d'apres vous, vaut-il mieux stocker les données dans un fichier binaire ou un fichier texte ?
je n'ai jamais manipulé de fichier binaire, et je pensais que ca pouvait etre une bonne occasion de s'y mettre, mais la, je me demande si le fait que la taille de mes structures varient ne constitue pas un obstacle pour la relecture (un eleve avec 5 notes n'occupe pas la meme place qu'un eleve avec 10 notes par exemple).
 
vu que fread() utilise en parametre la taille de l'element a lire, je me demande comment faire pour la preciser correctement lors de l'appel.
 
voila

Reply

Marsh Posté le 24-02-2004 à 17:50:54    

oui tu dois tout libérer petit à petit.
Si tu n'as pas envie de te prendre la tête dans un algo de libération de la mémoire de ton arbre, et si tu n'as pas de contrainte de mémoire, tu peux tricher en représentant ton arbre de manière linéaire, en ajoutant un pointeur dans ta structure, ce qui donnerait une liste chaînée que te créerais dans l'ordre de création de tes noeuds (et très simple à libérer)
Ou tu utilises un garbage collector (il en existe en C)

Reply

Marsh Posté le 24-02-2004 à 17:54:07    

leneuf22 a écrit :

oui tu dois tout libérer petit à petit.
Si tu n'as pas envie de te prendre la tête dans un algo de libération de la mémoire de ton arbre, et si tu n'as pas de contrainte de mémoire, tu peux tricher en représentant ton arbre de manière linéaire, en ajoutant un pointeur dans ta structure, ce qui donnerait une liste chaînée que te créerais dans l'ordre de création de tes noeuds (et très simple à libérer)
Ou tu utilises un garbage collector (il en existe en C)
 


 
je crois que je peux pas faire ca, ma liste chainee ne serait pas ordonnée, je perdrais ainsi tout le benefice de mon AVL pour effectuer mes recherches ..
de plus, la consigne stipule qu'il faut utiliser un AVL
 
je vais me renseigner au sujet du garbage collector, je ne sais pas de quoi il s'agit  
 :hello:

Reply

Marsh Posté le 24-02-2004 à 20:21:30    

up
:hello:

Reply

Marsh Posté le 29-02-2004 à 02:22:32    

pfff, 10 min pr retrouver mon login HFR
 
tout ca pour dire que tu pourrais fouiller un peu dans tes polys (sisi, le truc qu'elle a filé au mois de décembre ... hmhmmmm, ha non  : elle l'a donnée en amphi ... faut se lever le matin pr ca :p)
 
Tu risque fortement d'y trouver les reponses aux questions que tu cherche ;) ...


---------------
wouaaa, le vieux compte hfr tout poussiéreux ... [ Date d'arrivée sur le forum :  le 21-06-2001 ]
Reply

Marsh Posté le 29-02-2004 à 09:51:56    

Merci pour la structure, ca me fera ca de moins à trouver pour le projet :P

Reply

Marsh Posté le 29-02-2004 à 18:14:03    

oh lala
elles sont belles mes structures hein :D

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed