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 :

liste chainee en C


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Par défaut liste chainee en C
    Bonjour à tous,

    je débute en C et je suis confronté à mon premier gros problème:

    j'essaie de créer une liste chaînée toute simple en C : une cellule contiendra simplement un entier et un pointeur sur la cellule suivante...

    voici ma démarche:

    ma tête de liste (L) est un pointeur NULL, l'utilisateur entre un entier, je fais alors pointer L sur la cellule et le pointeur de la cellule (que j'ai appelé "suivant") sur NULL

    et voici mon 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
    # include <stdio.h>
     
    int main ()
    {
    	typedef struct 
    	{ int x ;
    	   struct TypeCellule *suivant ;
    	} TypeCellule ;
     
    	TypeCellule Cellule ;	
     
    	/* creation d'une liste chainee d'entiers */
     
    	TypeCellule *L ;
    	L=NULL;
     
    	char reponse='o' ;
     
    	while (reponse=='o')
    	{
    		printf ("Entrez un nombre entier: \n") ;
    		scanf  ("%d",&Cellule.x) ;
    		L=Cellule;
    		Cellule->suivant=NULL ;
     
    	}; 
     
    	return 0 ;
    }

    et là le compilateur me dit:

    error: ‘suivant’ undeclared (first use in this function)
    alors que je pensais l'avoir déclaré en déclarant: TypeCellule Cellule ;

    plus qu'un oubli, je pense que c'est quelque chose que je n'ai pas compris, si quelqu'un pouvait m'éclairer, je lui en serais reconnaissant ... en attendant merci de m'avoir lu.

  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
    Bonjour et bienvenue sur le forum

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct 
    {  int x ;
       struct TypeCellule *suivant ;
    } TypeCellule ;
    Ici struct TypeCellule n'est pas défini. C'est TypeCellule qui l'est. Comme celui-ci n'est pas défini avant le typedef, on ne peut écrire TypeCellule *suivant . Le mieux est de nommer la structure. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    typedef struct TypeCellule 
    { int x ;
      struct TypeCellule *suivant ;
    } TypeCellule ;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    	TypeCellule Cellule ;	
    	TypeCellule *L ;
    ....
    		L=Cellule;
    		Cellule->suivant=NULL ;
    L = Cellule est incorrect : L est un TypeCellule * alors que Cellule est un TypeCellule
    Cellule->suivant est incorrect : Cellule est une structure, pas un pointeur sur structure.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 5
    Par défaut deux erreurs corrigées
    Merci de ta réponse, j'ai déjà corrigé les deux erreurs de formulation mais ça ne tourne toujours pas ... Même en recopiant textuellement le programme donné en exemple dans mon livre ("Algorithmique et structures de données en C"), le compilateur me signale des erreurs de syntaxe que je ne comprends pas.
    Je crois que je veux aller trop vite, je dois maîtriser les pointeurs, les structures avant de m'attaquer aux listes chaînées ...

  4. #4
    Membre Expert

    Homme Profil pro
    Inscrit en
    Juillet 2003
    Messages
    2 075
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardennes (Champagne Ardenne)

    Informations forums :
    Inscription : Juillet 2003
    Messages : 2 075
    Par défaut
    Citation Envoyé par markine Voir le message
    Merci de ta réponse, j'ai déjà corrigé les deux erreurs de formulation mais ça ne tourne toujours pas ... Même en recopiant textuellement le programme donné en exemple dans mon livre ("Algorithmique et structures de données en C"), le compilateur me signale des erreurs de syntaxe que je ne comprends pas.
    Je crois que je veux aller trop vite, je dois maîtriser les pointeurs, les structures avant de m'attaquer aux listes chaînées ...
    Bonjour
    Il y a aussi le fait que vraisemblablement dans le morceau de code posté, on ne sort jamais du while. Tu définis reponse à 'o' et ensuite tu écris une boucle qui tournera tant que reponse == 'o' sans que rien ne permette de penser que reponse puisse changer.

  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
    markine :
    Je crois que je veux aller trop vite, je dois maîtriser les pointeurs, les structures avant de m'attaquer aux listes chaînées ...
    Je crois effectivement qu'il faut comprendre un minimum ces deux notions avant de les utiliser pour les listes chainées. D'ailleurs, une fois que tu les auras comprises, tu n'auras pas de difficultés sur les listes chainées.

Discussions similaires

  1. [LG]probleme d'ajout dans une liste chainée...
    Par misteryann dans le forum Langage
    Réponses: 5
    Dernier message: 08/03/2004, 20h28
  2. [LG]Listes chainées avec pointeur
    Par PaowZ dans le forum Langage
    Réponses: 2
    Dernier message: 17/02/2004, 19h49
  3. [LG]liste chainee + pointeur + affichage
    Par k_ro dans le forum Langage
    Réponses: 6
    Dernier message: 17/01/2004, 13h58
  4. [LG]Tri par insertion dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 4
    Dernier message: 18/12/2003, 22h34
  5. [LG]suppression dans une liste chainée
    Par mister_dsg dans le forum Langage
    Réponses: 9
    Dernier message: 16/12/2003, 21h20

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