Partage
  • Partager sur Facebook
  • Partager sur Twitter

Exercice liste chainée de structure

Sujet résolu
    7 mars 2018 à 16:30:37

    Bonjour, j'ai suivi le cours d'OC pour les listes chainées et souhaiterais pouvoir faire saisir par l'utilisateur la valeur qui va s'afficher lors de l'éxécution du programme. En effet la ce qui s'affiche est ce que je mets en arguments dans la fonction insertion. Je ne sais pas ou je dois faire rentrer la valeur de l'année par l'utilisateur. 

    #include <stdio.h>
    #include <stdlib.h>
    
    typedef struct chanson chanson;
    struct chanson
    {
        int annee;
    };
    
    typedef struct Chanson Chanson;
    struct Chanson
    {
        int annee;
        Chanson *suivant;
    };
    
    typedef struct Liste
    {
        Chanson *premier;
    }t_Liste;
    
    t_Liste *initialisation()
    {
        t_Liste *liste = malloc(sizeof(*liste));
        Chanson *chanson = malloc(sizeof(*chanson));
    
        if (liste == NULL || chanson == NULL )
        {
            exit(EXIT_FAILURE);
        }
    
        //scanf("%d",chanson->annee);
        chanson->annee = 0;
        chanson->suivant = NULL;
    
        liste->premier = chanson;
    
        return liste;
    }
    
    void insertion(t_Liste *liste, int nvannee)
    {
        ///création d'un nouvel Chanson
        Chanson *nouveau = malloc(sizeof(*nouveau)); /// On alloue la taille pour le nv Chanson
        if (liste == NULL || nouveau == NULL) /// On vérifie si l'allocation a réussie
            {
                exit(EXIT_FAILURE);
            }
    
        nouveau->annee = nvannee;
    
        nouveau->suivant = liste->premier; /// Ordre à suivre sur OC : faire pointer nv Chanson vers son ffuturu successeur puis faire pointer premier vers le nouvel chanson (insertion en début de liste tjr)
        liste->premier = nouveau; /// insetion de l'élément au début de liste
    
    }
    
    void afficherListe (t_Liste *liste)
    {
        if (liste == NULL)
        {
            exit(EXIT_FAILURE);
        }
    
        Chanson *actuel = liste->premier;
    
        while (actuel != NULL)
        {
            printf("%d -> ", actuel->annee);
            actuel = actuel -> suivant;
        }
        printf("NULL\n");
    }
    
    
    int main (int argc, char **argv)
    {
    
        t_Liste *maListe = initialisation();
    
    
        insertion(maListe,2);
        insertion(maListe, 8);
        insertion(maListe, 15);
    
        afficherListe(maListe);
        return 0;
    }



    Merci.

    • Partager sur Facebook
    • Partager sur Twitter
      7 mars 2018 à 17:17:46

      int unNombre;
      
      // demander un nombre
      printf("Donnez un nombre : ");
      scanf("%d", & unNombre);
      
      // ajout
      insertion(maListe, unNombre);
      
      
      // éventuellement, controle
      afficherListe(maListe);
      • Partager sur Facebook
      • Partager sur Twitter
        26 mars 2019 à 19:51:15

        michelbillaud a écrit:

        int unNombre;
        
        // demander un nombre
        printf("Donnez un nombre : ");
        scanf("%d", & unNombre);
        
        // ajout
        insertion(maListe, unNombre);
        
        
        // éventuellement, controle
        afficherListe(maListe);


        • Partager sur Facebook
        • Partager sur Twitter

        Exercice liste chainée de structure

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown