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

aminreal Messages postés 4 Date d'inscription   Statut Membre Dernière intervention   -  
 amine3113enima -
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   Statut Membre Dernière intervention   54
 
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
 
merci mon frere
0