Présentation de l'algorithme :
DFS
Tester l'algorithme :
Graphique :
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