Bonjour,
Je dois manipuler des listes d'adjacences et j'ai proc�der de la mani�re suivante :
J'ai une liste de type list<sommet> liste; sommet est une liste chain�e.
Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13 class sommet { private : // sommet *suivt; // le suivant dans la liste // int elm; // information contenue public : sommet *suivt; // le suivant dans la liste int elm; // information contenue sommet *suivant(void) { return suivt; } int &contenu(void) { return elm; } sommet* supprime_svt(); sommet* insere(int e); };
Dans mon programme, je proc�de de la mani�re suivante:
Je cr�er ma liste.
Les �l�ments sont lus dans un fichier.
Pour chaque ligne du fichier texte lu
je cr�e une liste chain�e o� chaque �l�ment est une valeure lu (des entiersune fois la liste chain�e cr�e, je l'ins�re dans ma liste et je recommence avec une nouvelle ligne du fichier.
Je ne sais pas parcourir ma liste de liste cha�n�es. J'ai essay� plein de solutions diverses et vari�es sans succ�s. Pouvez-vous me donner un petit coup de main?
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 bool graph::charger(char *S,graph & g) { int i,j,k,l,N,noeud,suc; ifstream ch(S); ch>>N; cout<<"n: "<<N<<endl; n=N; sommet liste; list<sommet>::iterator it; it=listeAdj.begin(); for(i=0;i<n;i++) { liste=g.AjoutNoeud(ch,liste,g); listeAdj.push_back(liste); } sommet * tmp; for(it=listeAdj.begin();it!=listeAdj.end();it++){ tmp=it; while(&tmp->suivant!=NULL){ cout<<&tmp->elm<<endl; &tmp=&tmp->suivant; } } return true; } sommet graph::AjoutNoeud(ifstream & ch,sommet & liste, graph & g) { int lecture,i,j; lecture=0; while(lecture!=-1){ ch>>lecture; //cout<<"lecture "<<lecture<<endl; liste.insere(lecture); } return liste; } sommet* sommet::insere(int e) // insère un nouvel élément de valeur e derrière this. // renvoie 0 si plus de mémoire, sinon suivt. { sommet *nouveau = new sommet; if (!nouveau) return 0; // plus de mémoire nouveau->suivt = suivt; nouveau->elm = e; return suivt = nouveau; } }
merci d'avance...
Partager