Structure et pointeur en C++

Fermé
yaobo84 Messages postés 91 Date d'inscription vendredi 20 février 2009 Statut Membre Dernière intervention 1 novembre 2012 - 4 juil. 2011 à 04:06
Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 - 4 juil. 2011 à 09:32
Bonjour,
je dois implementer le graphe: initialiser le graphe, ajouter des sommets en des aretes...
voici mes debuts:

struct elementadjacent
{ int info;
struct elementadjacent *suivant;
};

struct sommet
{ int label;
int info;
struct elementadjacent *adj;
struct sommet* suivant;
};

struct graphe
{ int nbSommet;
int nbArete;
int maxSommet;
struct sommet* premierSommet;
struct sommet* dernierSommet;
}

//initialisation du graphe
void InitGraphe(graphe *g)
{ g=new graphe;
(*g).nbSommet=0;
(*g).nbarete=0;
(*g).maxSommet=0;
g.premierSommet=NULL;
g.dernierSommet=NULL;
}

Je voudrais donc savoir est-ce que ma procedure InitGraphe est bien implementer? et commet proceder pour ecrie la procedure ajoutSommet(graphe* g,int S)?
Merci d'avance




1 réponse

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
4 juil. 2011 à 09:32
bonjour, ça me semble pas mal, mais là tu fait du C plus que du C++ (à part le new).
au lieu de (*g).sommet, utilise la notation g->sommet, c'est plus simple et plus lisible.
d'ailleurs, les deux dernière lignes (g.premierSommet) sont fausses.
Du point de vue structure général du code, il faut mieux allouer l'espace mémoire dans la porté où tu le détruit. à ta place, j'enlèverai le 'new' de InitGraph. Si tu le conserve, fait une fonction FreeGraph.
Pour ta fonction ajoutSommet(), je ne sais pas, "int S" n'est pas suffisant pour définir un sommet.
0