[HELP]:Remplir et Afficher une liste chainée.

Fermé
aminreal Messages postés 4 Date d'inscription mardi 9 mars 2010 Statut Membre Dernière intervention 14 novembre 2011 - 14 nov. 2011 à 22:09
 amine3113enima - 30 oct. 2017 à 23:06
Bonjour tous le monde,
j'ai vrmt besoin de votre aides.
je suis débutant en langage C, et on est déjà sur les listes chainée.
alors je vous explique ce que mon programme doit faire.

-Construire une liste chainée.
-remplir la liste, avec une boucle.
-afficher la liste à la fin.

voilà ou je suis arrivé :

#include<stdio.h>
#include<stdlib.h>
#include<conio.h>

struct list{
       int val;
       struct list *next;
       
       };
struct list *p;       
typedef struct list LIST;
typedef LIST *LINK;

int main()
{
    LINK queue = NULL;
    LINK tete = NULL;
    LINK p = NULL;
    
    int N, i=0;
    printf("donner un nombre : ");
    scanf("%d", &N);
   
    for(i=0;i<N;i++)
    { 
      
      p = (LIST *) malloc(sizeof(LIST));
      queue->next = p;
      tete->next = queue;
 
      printf("donner la valeur %d: ", i);
      scanf("%d", queue->val);
              
    }

   while(p != NULL)
    {
           printf("%s\n", p->val);
           p = p->next;
                  
    }
      
    system("PAUSE"); 
}



De l'aide SVP;

3 réponses

Hxyp Messages postés 401 Date d'inscription vendredi 28 janvier 2011 Statut Membre Dernière intervention 27 avril 2014 54
15 nov. 2011 à 04:59
Bonjour,

Apparemment il n'y a pas de règle sur la façon dont la liste est gérée donc vous pouvez faire au plus simple en ajoutant la nouvelle entrée par la tête de la liste au lieu de le faire par la queue. Si vous avez du mal avec typedef vous pouvez vous en passer
Petit bout de code facile à comprendre :

#include <stdio.h>
#include <stdlib.h>

struct list{
    int val;
    struct list *next;
};

int main(void)
  {
    struct list *tete,*ptr;
    int n,i;
    tete=ptr=NULL;

    printf("donner un nombre : ");
    scanf("%d",&n);

    for(i=0;i<n;i++){
        ptr=malloc(sizeof(struct list));
        if(ptr!=NULL){
            printf("donner la valeur %d : ",i);
            scanf("%d",&ptr->val);
            ptr->next=tete;
            tete=ptr;
        }
    }

    while(tete){
        printf("%d\n",tete->val);
        ptr=tete;
        tete=tete->next;
        free(ptr);
    }
    return 0;
  }
3
amine3113enima
30 oct. 2017 à 23:06
merci mon frere
0