j'ai écrit une classe implémentant une liste doublement chainée circulaire,le destructeur ne fonctionne pas , je travaille sous xp avec code::blocks .
merci d'avance
le code :
Code c++ : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86 /*Expression.h*/ #include <iostream> using namespace std; class Expression{ public: Expression(); bool insertion_dans_liste_vide (int donnee); bool ins_fin_liste (int donnee); void affiche(); ~Expression(); struct ElementListe { int donnee; ElementListe *suivant; ElementListe *precedent; }; private: int taille; ElementListe *debut; ElementListe *fin; }; /*Expression.cpp*/ #include "Expression.h" Expression::Expression(){ debut = NULL; fin = NULL; taille = 0; } Expression::~Expression(){ ElementListe *courant = this->fin->precedent; while (courant!=(this->debut)){ delete courant->suivant; cout << "deleted !" << endl; courant=courant->precedent; } cout << "everything is deleted !" << endl; } bool Expression::insertion_dans_liste_vide (int donnee){ ElementListe *nouveau_element; if (!(nouveau_element = new ElementListe)) return false; nouveau_element->donnee = donnee; nouveau_element->precedent = nouveau_element; nouveau_element->suivant = nouveau_element; this->debut = nouveau_element; this->fin = nouveau_element; this->taille++; return true; } bool Expression::ins_fin_liste (int donnee){ ElementListe *nouveau_element; if (!(nouveau_element = new ElementListe)) return false; nouveau_element->donnee = donnee; nouveau_element->suivant = this->debut; nouveau_element->precedent = this->fin; this->fin->suivant = nouveau_element; this->fin = nouveau_element; this->fin->suivant = this->debut; this->taille++; return true; } void Expression::affiche(){ ElementListe *courant; courant = this->debut; printf("[ "); int i=0; while(i<(this->taille)){ printf("%d ",courant->donnee); courant = courant->suivant; i++; } printf("]\n"); }
Partager