Salut a tous !
Bon ben voila tout est dans le titre, y'a t'il en C une structure comme les vecteurs en Java ? Je peux toujours rêver je suppose . . .
Sinon, j'ai un problème de conception, je m'explique :
Je dois parcourir un graphe composé de noeud et d'arcs.
En fonction d'un noeud de départ et d'un parcours (aba, par exemple) (j'ai oublié de préciser que les arcs sont étiquettés par des lettres) je dois trouver tous les noeuds correspondants .
J'ai donc fait un fonction
Je vous met les structures qui vont avec :
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 NoeudRetour rechercheImage(char parcours, Noeud depart) { int i = 0; int nb_noeud = 0; NoeudRetour tab_resultat = malloc(sizeof(struct noeudRetour)); tab_resultat->Tableau_noeud = malloc(sizeof(Noeud)); if (tab_resultat == NULL) { perror("- Fonction rechercheImage : Erreur allocation memoire tableau resultat \n"); return NULL; } if ( tab_resultat->Tableau_noeud == NULL) { perror("- Fonction rechercheImage : Erreur allocation memoire sous tableau resultat \n"); return NULL; } for (i = 0; i < depart->Nombre_d_arcs_sortants; i++) { if ( (((depart->Arcs_sortants)[i])->Action)[0] == parcours) { (tab_resultat->Tableau_noeud)[nb_noeud] = ((depart->Arcs_sortants)[i])->Destination; tab_resultat->Tableau_noeud = realloc(tab_resultat->Tableau_noeud, sizeof(Noeud) * (nb_noeud + 1)); nb_noeud ++; if (tab_resultat->Tableau_noeud == NULL) { perror("- Fonction rechercheImage : Erreur reallocation memoire sous tableau resultat \n"); return NULL; } } } tab_resultat->Nb_retour = nb_noeud; return tab_resultat; }
Mon problème : je veux faire une fonction qui prenne en paramètre un Noeud de départ, une chaine de caractère représentant un chemin dans le graphe par exemple "abab" et j'aimerais que cette fonction apelle 4 fois la fonction que j'ai au dessus, mais j'ai du mal a voir comment et ou récupérer le retour de la fonction, si je dois faire un tableau, comment je dois faire mes boucles etc . . . En espérant avoir été clair, merci d'avance
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 typedef struct arc *Arc; typedef struct noeud *Noeud; typedef struct graphe *Graphe; typedef struct noeudRetour *NoeudRetour; struct noeud{ char *Nom; char *Proprietes; int Nombre_de_proprietes; Arc *Arcs_sortants; int Nombre_d_arcs_sortants; }; struct noeudRetour{ int Nb_retour; Noeud *Tableau_noeud; }; struct arc{ Noeud Destination; char *Action; }; struct graphe{ Noeud Depart; int Nombre_de_noeuds; Noeud *Tableau_noeud; }; #endif
Partager