Bonjour, j'etais en train de rafraichir mon c++ , j'ai donc tente de coder une liste simplement chainee.
voici le code , et apres les questions.
La methode print marche correctement , mais la surcharge de << donne des resultats suspects... j'ai affiche la valeur de head dans les 2 fonctions et ils semblent que les valeurs soient differentes.
Code : 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 #include <iostream> using namespace std; class ll{ private: typedef struct elem{ //ne pas oublier le elem ici aussi struct elem* next; int val; }elem; elem* head; int nbElem; public: ll():head(NULL),nbElem(0){}; ~ll() { elem* newLink; newLink=head; while (head!=NULL) { head=head->next; delete newLink; newLink=head; } } int addLink(int _val) { elem* newLink= new elem; if (newLink==NULL) return -1; newLink->val=_val; newLink->next=head; head=newLink; ++nbElem; return 0; } friend ostream& operator<<(ostream& out, const ll& liste); void print() { elem *cur; cur=head; while (cur!=NULL) { cout<<cur->val<<" "; cur=cur->next; } cout<<head<<" "; cout<<endl; } }; ostream& operator<<(ostream& out, const ll& liste) { struct ll::elem *cur; // cur=const_cast<ll::elem*>(liste.head); cur=liste.head; cout<<cur<<" "<<liste.head<<endl; cout<<liste.nbElem<<" "; while (cur!=NULL) { out<<cur->val<<" "; cur=cur->next; } return out; } int main(int argc, char** argv) { ll* liste=new ll; liste->addLink(1); liste->addLink(2); liste->addLink(3); liste->print(); cout<<liste<<endl; }
Est ce que vous savez d'ou vient le soucis ?D:\VS2008\VC>source
3 2 1 00551BC0
00551B90
Merci.
Partager