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 :

inverse liste chainée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut inverse liste chainée
    salut tt le monde

    j'ai un programme qui me donne des erreur

    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
    #include<stdio.h>
    #include<stdlib.h>
     
    typedef struct liste
    {
      int noeud;
      liste *next;
    }liste;
     
    liste *inverse_liste (liste *lst)
    {
      liste *tmp1; /* pointeur vers le suivant dans la liste lst */
      liste *tmp2; /* pour memoriser lst de manière temporaire */
     
      /* initialisation */
      if (lst != NULL)
      {
        tmp1 = lst->next;
        lst->next = NULL;
     
        while (tmp1 != NULL)
        {
          /* on memorise l'adresse du suivant de tmp1*/
          tmp2 = tmp1->next;
     
          tmp1->next = lst; /* on met le next de tmp1 a jour */
     
          lst = tmp1;     /*On décale lst */
     
          tmp1 = tmp2; /* on passe au suivant de l'ancienne lst */
        }
      }
      return lst;
    }
     
    void main()
    {
    	liste *list;
     
    	for(i=0;i<4;i++)
    	{
    		printf("no	:");
    		scanf("%d",list->noeud);
    	}
    	inverse_liste(liste);
    }
    voila les erreur quelle me donne;
    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
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(8) : error C2061: syntax error : identifier 'liste'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(9) : error C2059: syntax error : '}'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(11) : error C2143: syntax error : missing '{' before '*'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(11) : error C2143: syntax error : missing ')' before '*'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(11) : error C2143: syntax error : missing '{' before '*'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(11) : error C2059: syntax error : ')'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(12) : error C2054: expected '(' to follow 'lst'
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(39) : error C2065: 'liste' : undeclared identifier
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(39) : error C2065: 'list' : undeclared identifier
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(39) : warning C4552: '*' : operator has no effect; expected operator with side-effect
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(41) : error C2065: 'i' : undeclared identifier
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(44) : error C2223: left of '->noeud' must point to struct/union
    C:\Documents and Settings\khabbaz\Bureau\liste chainé\listesimple\liste-inverse.c(46) : warning C4013: 'inverse_liste' undefined; assuming extern returning int
    Error executing cl.exe.
     
    liste-inverse.obj - 11 error(s), 2 warning(s)

  2. #2
    gl
    gl est déconnecté
    Rédacteur

    Homme Profil pro
    Inscrit en
    Juin 2002
    Messages
    2 165
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2002
    Messages : 2 165
    Par défaut
    Ce n'est pas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct liste
    {
      int noeud;
      liste *next;
    }liste;
    mais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    typedef struct liste
    {
      int noeud;
      struct liste *next;
    }liste;

  3. #3
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Ucom-C++
    j'ai un programme qui me donne des erreur
    <...>
    Trop d'erreurs basiques. (on est pas là pour ça).

    Tu devrais commencer par apprendre les bases du C. Ensuite, tu devrais aborder les bases des listes chainées...

    http://emmanuel-delahaye.developpez....s_chainees.htm

  4. #4
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    salut

    oui merci ça marche mais le main() ne marche pas je sé pas pourquoi;

    voila mon main()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void main()
    {
    	struct liste *list;
    	int donne;
    	list=(liste*)malloc(sizeof(liste));
    	list->noeud=donne;
    	while(list!=NULL)
    	{
    		printf("no	:");
    		scanf("%d",&donne);
    		list=list->next;
    	}
    	inverse_liste(list);
    }

  5. #5
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Ucom-C++
    oui merci ça marche mais le main() ne marche pas je sé pas pourquoi;
    Relis mieux mon article, parce que tu n'as toujours pas compris qu'il fallait créeer un nouveau noeud à chaque tour...
    As-tu la moindre idée de ce qu'est une liste chainée ?

    Déjà, tu devrais revoir les bases du C et apprendre à écrire main() correctement :

    http://emmanuel-delahaye.developpez....s.htm#typemain

    ensuite, tu devrais travailler sur un mécanisme qui crée une liste chainée correcte. (la fonction add_end() de mon article, par exemple).

    Une fois que la liste est créée, on verra comment l'inverser. Il y a de fortes chances que le pointeur de tête change de valeur. Il faut donc probablement écrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    list = inverse_liste(list);

  6. #6
    Membre confirmé
    Inscrit en
    Avril 2007
    Messages
    65
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 65
    Par défaut
    merci bien

    mais aprés avoir compiler mon programme en mode "run to cursor"

    je trouve l'erreur a se niveau dans le main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(list!=NULL)
    	{
    		printf("no	:");
    		scanf("%d",&donne);
    -->	list=list->next;
    	}

  7. #7
    Expert éminent
    Avatar de Emmanuel Delahaye
    Profil pro
    Retraité
    Inscrit en
    Décembre 2003
    Messages
    14 512
    Détails du profil
    Informations personnelles :
    Âge : 68
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2003
    Messages : 14 512
    Par défaut
    Citation Envoyé par Ucom-C++
    merci bien

    mais aprés avoir compiler mon programme en mode "run to cursor"

    je trouve l'erreur a se niveau dans le main
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    while(list!=NULL)
    	{
    		printf("no	:");
    		scanf("%d",&donne);
    -->	list=list->next;
    	}
    Oui, c'est sûr. list->next vaut n'importe quoi... alors au tour suivant, ça craque... Mais commence par étudier la théorie. Tu n'apprendras pas à coder les listes chainées en bidouillant. Tu vas finir par de couper un bras... Le C, c'est pas un langage de bricoleurs...

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. inversion des noeuds dans une liste chainée
    Par mrism000 dans le forum C
    Réponses: 1
    Dernier message: 20/05/2012, 15h35
  2. Bibliothèque de listes chainées
    Par gege2061 dans le forum C
    Réponses: 29
    Dernier message: 17/12/2004, 20h15
  3. copie de liste chainée
    Par tomsoyer dans le forum C++
    Réponses: 15
    Dernier message: 31/08/2004, 18h20
  4. Trie liste chaine
    Par Congru dans le forum C
    Réponses: 2
    Dernier message: 30/03/2004, 19h05
  5. tri de liste chainée
    Par RezzA dans le forum C
    Réponses: 7
    Dernier message: 26/01/2003, 20h25

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