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 :

Implementation liste simplement chainée


Sujet :

C

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Algérie

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par défaut Implementation liste simplement chainée
    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
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    #include <stdio.h>
    #include <stdlib.h>
    #include <time.h>
    typedef
    struct noeud
    {
        int adresse,taille,temp;
        struct noeud *suivant ;
     
    }*liste;
    int random ( int a ,int b )
    {
        return (a+(rand()%((b+1)+a )));
    }
    void initialisation (liste *LBO)
    {
        *LBO=NULL;
    }
    void creation (liste *LBO)
    {liste q;
    liste prec=NULL ;
     
    int i=0 ;
    srand(time(NULL));
        while (i<3)
        {printf("%d", i);
       q=malloc(sizeof(liste));
       if(!q)
        {
            fprintf(stderr, "Cannot allocated memory");
            exit(1);
        }
     
           else  if (*LBO==NULL)
            {
                q->adresse =0;
                q->taille =random(5,45);
                q->temp=random(5,15);
                q->suivant=NULL;
                *LBO=q ;
                i++ ;
     
            }
            else
            {
            prec=*LBO;
            q->taille=random(5,45);
            q->temp=random(5,15);
            q->adresse=(prec)->adresse+(prec)->taille ;
            q->suivant=*LBO;
            *LBO=q ;
            i++;
     
            }
     
     
        }
        printf("fin\n");
        }
     
     
    void affichage ( liste LBO )
     {
         printf("\nvoici ta liste \n ");
         while (LBO!=NULL)
         {
             printf("%d-->" ,LBO->taille  );
             LBO=LBO->suivant ;
         }
         if (LBO==NULL)
            printf("NULL") ;
     }
     
    int main()
    {
        printf("Hello world!\n");
        liste LBO ;
        initialisation(&LBO);
        printf("allo1\n");
        creation(&LBO);
        printf("allo2\n");
        affichage(LBO);
        return 0;
    }
    j'ai pas pu trouver l erreur :/

  2. #2
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Quelle erreur?

    Est-ce ton compilateur qui se plaint? à quel moment, que dit-il?
    Est-ce à l'usage? Pourquoi: le programme ne fait pas ce qu'il faut ou s'arrête-t-il brutalement?

    Prends le temps de préciser ton problème, ca t'aidera probablement à déterminer ce qui ne va pas.

    Personnellement, j'accuserai ta fonction random d'être bizarre. Elle prend deux arguments (très mal nommés), ca ressemble à un intervalle, mais il n'y a aucune soustraction dans la valeur calculée.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    etudiant
    Inscrit en
    Mars 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Algérie

    Informations professionnelles :
    Activité : etudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : Mars 2016
    Messages : 5
    Par défaut reponse
    quand j'execute le programme une boite qui s'affiche " a cessé de fonction " je ponse qu'il est un probleme de pointeur
    prd pour mon fr

  4. #4
    Expert éminent

    Femme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juin 2007
    Messages
    5 202
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juin 2007
    Messages : 5 202
    Par défaut
    Commence par une liste d'entier normaux, dans laquelle tu mettras les entiers successifs: 0, 1, 2, 3, etc.

    Cela te permettra de séparer la partie "manipulation de la liste" de la partie "utilisation des éléments de la liste".
    Et ainsi, de vérifier que la première partie fonctionne.

  5. #5
    Expert confirmé
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Décembre 2015
    Messages
    1 599
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Décembre 2015
    Messages : 1 599
    Par défaut
    Bonjour,

    Encore un méfait de faire un typedef sur un pointeur (du coup on ne voit plus clairement l'objet à allouer).

    L'objet q que tu crées et initialises dans creation(), ne devrait-il pas être un nœud plutôt qu'une liste?
    Ton allocation n'alloue qu'un pointeur, ce qui est bien insuffisant pour y mettre toutes les données d'un nœud!

    L'astuce du jour pour ne pas se tromper sur un malloc, allouer sizeof(*ptrDestination)*(NbElementsSiTableau)
    ici on fera q = malloc( sizeof( *q ) );.

Discussions similaires

  1. fusion de deux liste simplement chainée
    Par mdh12 dans le forum Débuter
    Réponses: 6
    Dernier message: 14/01/2010, 19h23
  2. Tri d'une pile avec liste simplement chainée
    Par thecabbages dans le forum C
    Réponses: 3
    Dernier message: 17/12/2009, 21h08
  3. question liste simplement chainée
    Par american dans le forum Débuter avec Java
    Réponses: 2
    Dernier message: 15/03/2009, 21h45
  4. Réponses: 3
    Dernier message: 25/10/2006, 19h08
  5. Liste simplement chainée
    Par sorry60 dans le forum C
    Réponses: 54
    Dernier message: 29/11/2005, 22h05

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