Présentation de l'algorithme :

DFS

Tester l'algorithme :


(cliquer sur le bouton ci-dessus pour lancer ou relancer l'exécution de l'algorithme)

Résultats :

Code de l'algorithme :
1     VARIABLES
2       pointeur EST_DU_TYPE NOMBRE
3       tableau EST_DU_TYPE LISTE
4       d EST_DU_TYPE NOMBRE
5       f EST_DU_TYPE NOMBRE
6       fin_tableau EST_DU_TYPE NOMBRE
7       i EST_DU_TYPE NOMBRE
8       valeur_actuelle EST_DU_TYPE NOMBRE
9       noeud_suivant EST_DU_TYPE NOMBRE
10      nbr_noeuds EST_DU_TYPE NOMBRE
11      table_index EST_DU_TYPE LISTE
12    DEBUT_ALGORITHME
13      
14      pointeur PREND_LA_VALEUR 0
15      tableau[0] PREND_LA_VALEUR 1
16      i PREND_LA_VALEUR 1
17      TANT_QUE (tableau[pointeur] != 0) FAIRE
18        DEBUT_TANT_QUE
19        pointeur PREND_LA_VALEUR pointeur+1
20        AFFICHER "Création du noeud "
21        AFFICHER i
22        AFFICHER ". Entrez le nombre total de noeuds voisins de celui-ci."
23        table_index[i] PREND_LA_VALEUR pointeur
24        i PREND_LA_VALEUR i+1
25        LIRE tableau[pointeur]
26        SI (tableau[pointeur] != 0) ALORS
27          DEBUT_SI
28          d PREND_LA_VALEUR pointeur+tableau[pointeur]
29          TANT_QUE (pointeur < d) FAIRE
30            DEBUT_TANT_QUE
31            pointeur PREND_LA_VALEUR pointeur+1
32            AFFICHER "Entrez le numero du noeud voisin"
33            LIRE tableau[pointeur]
34            FIN_TANT_QUE
35          FIN_SI
36        FIN_TANT_QUE
37      fin_tableau PREND_LA_VALEUR pointeur-1
38      nbr_noeuds PREND_LA_VALEUR i
39      AFFICHER "Vous avez saisi: "
40      POUR i ALLANT_DE 1 A fin_tableau
41        DEBUT_POUR
42        AFFICHER tableau[i]
43        AFFICHER " "
44        FIN_POUR
45      AFFICHER " "
46      
47      
48      pointeur PREND_LA_VALEUR 1
49      AFFICHER "Visite du noeud 1."
50      TANT_QUE (tableau[pointeur] != 0) FAIRE
51        DEBUT_TANT_QUE
52        //On est forcément sur une case qui indique un nombre de noeuds frères
53        valeur_actuelle PREND_LA_VALEUR tableau[pointeur]
54        //On va supprimer le dernier lien. On décrémente donc le nombre de liens
55        tableau[pointeur] PREND_LA_VALEUR tableau[pointeur]-1
56        //On se positionne sur la case indiquant le numéro du dernier voisin du noeud actuel
57        noeud_suivant PREND_LA_VALEUR tableau[pointeur + valeur_actuelle]
58        AFFICHER "Visite du noeud "
59        AFFICHER noeud_suivant
60        ////On lit dans la table des index la position dans le tableau du noeud concerné
61        pointeur PREND_LA_VALEUR table_index[noeud_suivant]
62        FIN_TANT_QUE
63    FIN_ALGORITHME