IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C Discussion :

Parcours en profondeur (DFS)


Sujet :

C

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Octobre 2015
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : Allemagne

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Octobre 2015
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Parcours en profondeur (DFS)
    Bonjour ,

    y´a un truc que jn´arrive pas a capter dans ce code :
    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
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    #include<stdio.h>
     
    typedef struct node
    {
        struct node *next;
        int vertex;
    }node;
     
    node *G[20];  
    //heads of linked list
    int visited[20];
    int n;
    void read_graph();
    //create adjacency list
    void insert(int,int); 
    //insert an edge (vi,vj) in te adjacency list
    void DFS(int);
     
    void main()
    {
        int i;
        read_graph();
        //initialised visited to 0
     
        for(i=0;i<n;i++)
            visited[i]=0;
     
        DFS(0);
    }
     
    void DFS(int i)
    {
        node *p;
     
        printf("\n%d",i);
        p=G[i];
        visited[i]=1;
        while(p!=NULL)
        {
           i=p->vertex;
     
           if(!visited[i])
                DFS(i);
            p=p->next;
        }
    }
     
    void read_graph()
    {
        int i,vi,vj,no_of_edges;
        printf("Enter number of vertices:");
     
        scanf("%d",&n);
     
        //initialise G[] with a null
     
        for(i=0;i<n;i++)
        {
            G[i]=NULL;
            //read edges and insert them in G[]
     
            printf("Enter number of edges:");
               scanf("%d",&no_of_edges);
     
               for(i=0;i<no_of_edges;i++)
            {
                printf("Enter an edge(u,v):");
                scanf("%d%d",&vi,&vj);
                insert(vi,vj);
            }
        }
    }
     
    void insert(int vi,int vj)
    {
        node *p,*q;
     
        //acquire memory for the new node
        q=(node*)malloc(sizeof(node));
        q->vertex=vj;
        q->next=NULL;
     
        //insert the node in the linked list number vi
        if(G[vi]==NULL)
            G[vi]=q;
        else
        {
            //go to end of the linked list
            p=G[vi];
     
            while(p->next!=NULL)
                p=p->next;
            p->next=q;
        }
    }
    avec ces inputs la ca donne ca :

    Nom : C+Program+to+implement+DFS+traversal+on+a+graph+represented+using+an+adjacency+list.jpg
Affichages : 288
Taille : 56,8 Ko

    Normalement dans la Fonction DFS , quand on arrive au 7 , y´a la condition de while n´est plus valable et donc on sert de cet boucle la mais apres je ne sais pas ca marche le backtracking pour afficher les autres valeurs de la liste d´adjacence ( a partir de 2 )



    Merci !

  2. #2
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    À ta place, j'afficherais un peu plus d'infos sur le parcours; notamment, le début et la fin d'une boucle de parcours des fils...
    (le tout dans un if testant s'il y a des fils ou non; voire, un test s'il y a des fils non-visités ou non)
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Parcours en profondeur ( bonne implémentation?)
    Par Gottfried dans le forum C
    Réponses: 3
    Dernier message: 03/02/2010, 16h36
  2. Algorithme de parcours en profondeur
    Par tunnour dans le forum Mathématiques
    Réponses: 0
    Dernier message: 01/01/2010, 22h21
  3. Parcours en profondeur - Déplacement de cubes
    Par Djakisback dans le forum Prolog
    Réponses: 4
    Dernier message: 16/11/2007, 18h51
  4. Parcours en profondeur d'un arbre n-aire
    Par Premium dans le forum Langage
    Réponses: 11
    Dernier message: 20/02/2006, 08h01
  5. [debutant] parcours en profondeur arbre n-aire
    Par tx dans le forum Langage
    Réponses: 1
    Dernier message: 15/02/2006, 03h56

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo