bonjour tout le monde
je cherche une fonction prédifinie qui désalloue la place mémoire réservéé par un arbre.
Version imprimable
bonjour tout le monde
je cherche une fonction prédifinie qui désalloue la place mémoire réservéé par un arbre.
Tout dépend comment tu as programmé ton arbre. Donnes-nous plus de précisions...
*****************Code:
1
2
3
4
5
6
7 struct tab { double val; int occ; String code; }; tab *Table;
et je veux désallouer P.Code:
1
2
3
4
5
6
7
8
9 typedef struct ab { tab element; struct ab *droit; struct ab *gauche; }noeud; typedef noeud * arbre; arbre P;
merci d'avance.
Pour l'instant ton pointeur P est un pointeur qui pointe n'importe où !
Et tu n'as aucun espace alloué pour un noeud !
mais j'ai alloué de la place pour P
Code:P = (arbre )malloc(sizeof(arbre));
Ce qui a été alloué avec malloc doit être désalloué avec free.
Mais ça c'est du C, pas du C++.
voila le code:
Code:
1
2
3
4
5
6
7 void supprimer(arbre T) { if (! est_vide(T) ) { supprimer (T->gauche); supprimer (T->droit); } free(T); }
ensuite l'appel:
mais ça marche pasCode:supprimer(P);
Je pense qu'il y a une erreur ici.Citation:
Envoyé par sino
Tu devrai faire:
car sinon, tu n'alloue de l'espace que pour un pointeur.Code:P = (arbre)malloc(sizeof(noeud));
Sinon, comme cela a été dis plus haut, tout dans ton code est en fait du C.
(non seulement le code mais aussi la manière de travailler)
Donc la prochaine fois, essaie de poster dans le bon forum ;-).
Utilise new et delete.
En C++ c'est très simple tu met un destructeur dans la classe ab qui fait :
Tu est obligé de faire du C ?Code:
1
2 delete droit; delete gauche;