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 :

enfiler un sommet


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par défaut enfiler un sommet
    salut!je fais une file de sommets et il y a un probleme pour la fonction enfiler, elle n'enfile qu'un seul sommet au delà il y a un segmentation fault!!comment faire pour que le nombre de sommets ne soit pas limité??

    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
     
    /*---------------------------------------------------------
    	-- structure sommet
    ---------------------------------------------------------*/
     
    struct SOMMET {
    	int marque, cle;
    };
    typedef struct SOMMET sommet;
     
     
     
    /*----------------------------------------
    	--structure element file
    ----------------------------------------*/
     
    struct element{
    	sommet somet;
    	struct element * suivant;
    };
     
    typedef struct element maillon;
     
    typedef struct{
    	struct element * tete, *queue;
    }File;
     
    /*-----------------------------------------------------
    	--fonction qui permet d enfiler un nouvel element
    -----------------------------------------------------*/
    int enfiler(File * pf, sommet pivot)
    {
    	maillon * m;
    	int vide;
    	printf("enfiler\t");
    	m = (maillon*) malloc (sizeof (maillon));
    	if (m != NULL){
    		m->somet.cle = pivot.cle;
    		m->suivant = NULL;
    		vide = est_vide(pf);
    		if(vide == 0)
    			pf->tete = m;
    		if(vide == 1)
    			pf->queue->suivant = m;
     
    	}
    	printf("fin enfiler\n");
    	return 1;
    }

  2. #2
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Le pointeur queue n'est pas initialisé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
       if(vide == 0)
          pf->tete = pf->queue = m;

  3. #3
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par défaut
    mercii!

  4. #4
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par défaut enfiler/afficher une file de sommet
    salut!lorsque j'exécute mon programme il m'affiche indéfiniment que les deux premiers sommets enfilés!donc je ne sais pas si le problème vient de ma fonction afficher ou de la fonction enfiler

    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
    /*-----------------------------------------------------
    	--fonction qui permet d enfiler un nouvel element
    -----------------------------------------------------*/
    int enfiler(File * pf, sommet pivot)
    {
    	maillon * m, *cour, *prec;
    	int vide;
    	printf("enfiler\t");
    	m = (maillon*) malloc (sizeof (maillon));
    	if (m != NULL){
    		m->somet.cle = pivot.cle;
     
    		vide = est_vide(pf);
    		if(vide == 0)
    			pf->tete = pf->queue = m;
    		if(vide == 1){
    			cour = pf->tete;
    			prec = NULL;
    			while( cour!= NULL){
    				prec = cour;
    				cour = cour->suivant;
    			}
    			prec->suivant = m;
    			m->suivant = pf->queue;
    		}
    	}
    	printf("fin enfiler\n");
    	return 1;
    }
     
     
    /*---------------------------------------------
    	--affichage d'une file
    ---------------------------------------------*/
    void afficher(File * pf)
    {
         maillon* m;
         int vide;
         vide = est_vide(pf);
     
         if(vide == 1){
         	m = pf->tete;
    	printf("affichage \t");
         	while(m != NULL){
                    printf("%d \t", m->somet.cle);
                    m = m->suivant;
    	}
         printf("fin affichage\n");
         }
     
    }

  5. #5
    Expert confirmé
    Avatar de diogene
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Juin 2005
    Messages
    5 761
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2005
    Messages : 5 761
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    		if(vide == 1){
    			cour = pf->tete;
    			prec = NULL;
    			while( cour!= NULL){
    				prec = cour;
    				cour = cour->suivant;
    			}
    			prec->suivant = m;
    			m->suivant = pf->queue;
    		}
    Je ne comprend pas ce code, je suppose que vous voulez enfiler en queue, donc derrière l'élement actuellement pointé par pf->queue (si la liste n'est pas vide):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (m != NULL){
       m->somet.cle = pivot.cle;
       m->suivant = NULL;
       vide = est_vide(pf);
       if(vide == 0)  
          pf->tete = m;
       else 
          pf->queue->suivant = m;
       pf->queue = m;
    }

  6. #6
    Membre averti
    Femme Profil pro
    Étudiant
    Inscrit en
    Mai 2012
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Transports

    Informations forums :
    Inscription : Mai 2012
    Messages : 14
    Par défaut
    oui c'est exact mais j'ai trouvé le probleme c'est au niveau de enfiler il manque l'instruction

    mercii

Discussions similaires

  1. Réponses: 24
    Dernier message: 23/02/2006, 11h04
  2. Calcul du plu court chemin entre 2 sommets d'un graphe valué
    Par atlasm dans le forum Algorithmes et structures de données
    Réponses: 25
    Dernier message: 07/08/2005, 17h06
  3. [Info]Renommer le sommet de la hiérarchie de packages
    Par duj dans le forum Eclipse Java
    Réponses: 4
    Dernier message: 30/05/2005, 22h23
  4. problème de calcul des normales par sommet
    Par captainSeb dans le forum OpenGL
    Réponses: 2
    Dernier message: 21/01/2005, 13h42
  5. dessin d'un arc entre deux sommet
    Par yesra dans le forum C++Builder
    Réponses: 3
    Dernier message: 24/04/2004, 16h43

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