Bonjour tout le monde,

J'ai examen d'algo mercredi et je cale sur les graphes non orientés (sur les orientés aussi ).

Voici ce que je ne comprends pas (pour l'instant) :

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
FONCTION   GO_AjouterNoeud(Graphe,Information);
PARAMETRES Graphe      : POINTEUR DE TNoeudGO; [I/O]
           Information : DATA; [I]
RETOUR     BOOLEEN;
VARIABLE   Nouveau : POINTEUR DE TNoeudGO;
DEBUT
  SI ALLOUER(Nouveau,TNoeudGO) ALORS
    Nouveau->Donnee      = Information;
    Nouveau->PremiereRel = NULL;
    Nouveau->Suivant     = Graphe;
    Graphe               = Nouveau;
    RETOURNER VRAI;
  SINON
    RETOURNER FAUX;
  FIN SI
FIN
Je ne comprends pas :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
Nouveau->Suivant     = Graphe;
Si le graphe ne contient aucun noeud, il pointe quand même sur graphe ?

Edit: je viens de comprendre, vue que par facilité on ajoute toujours au début, le premier est pointé par GRAPHE, ensuite, je corrige le chainage en pointant nouveau sur graphe (qui est le premier pour l'instant)

Je ne comprends pas non plus pourquoi on dit "

Nouveau->Suivant = Graphe;"

Edit : J'ai compris aussi, je fais pointer GRAPHE sur Nouveau, il ne pointe donc plus sur l'ancien premier mais bien sur nouveau

Et ici :

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
FONCTION   GO_AjouterRelation(Graphe,Source,Cible);
PARAMETRES Graphe       : POINTEUR DE TNoeudGO; [I/O]
           Source,Cible : POINTEUR DE TNoeudGO; [I]
RETOUR     BOOLEEN;
VARIABLE   Nouveau : POINTEUR DE TRelationGO;
DEBUT
  SI (Source != NULL) ET (Cible != NULL) ALORS
    SI ALLOUER(Nouveau,TRelationGO) ALORS
      Nouveau->Cible      = Cible;
      Nouveau->Suivant    = Source->PremiereRel;
      Source->PremiereRel = Nouveau;
      RETOURNER VRAI;
    SINON
      RETOURNER FAUX;
    FIN SI
  SINON
    RETOURNER FAUX;
  FIN SI
FIN
Sauriez-vous me dire dans le schéma à quoi correspond :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
Nouveau-->Cible
Nouveau->Suivant    = Source->PremiereRel;
Source->PremiereRel = Nouveau;
J'ai franchement beaucoup de mal, j'espère que quelqu'un saura m'aider.

Merci d'avance.

beegees