Explications sur les structures de donnees

inteligence Messages postés 46 Statut Membre -  
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   -
bonjour a tous j'ai un peutit problemme concernant ce programme c'est en faite au sujet des structures de donnees:

#include<stdio.h>
#include<stdlib.h>
struct maillon
{
int valeure;
struct maillon *suivant;
};
typedef struct maillon cellule;
void main()
{
cellule *L=NULL;
L=(cellule *)(malloc sizeof(cellule));
scanf("%d\n",&L->valeure);
L->suivant=NULL;
}

en realite je n'ai pas compris a partire de la ligne 11;alors svp je voudrai quelque explication je suis blocke.
merci d'avence.
A voir également:

4 réponses

Gorgo13 Messages postés 12 Statut Membre 23
 
void main()
{
cellule *L=NULL; // Tu declares un pointeur de type cellule et tu l'initialises a NULL... mais c'est pas necessaire.
L=(cellule *)(malloc sizeof(cellule)); // Tu alloues de la memoire pour ta structure. L va pointer vers un espace memoire "valide"
// qui contiendra ta structure.
scanf("%d\n",&L->valeure); // tu demandes a l'utilisateur de rentrer une valeur entiere au clavier,
// et cette valeur est affectee au membre "valeure" (au passage y'a pas de "e" a la fin) de L (qui a le type structure cellule).
// Avec scanf, il faut passer le pointeur vers "valeure", d'ou le &L->valeure,
// qui aurait aussi pu s'ecrire, &(L->valeure)
L->suivant=NULL; // tu assignes un pointeur NULL au pointeur "suivant". Ce truc s'appelle une liste chainee...
}

T'as compris?
0
inteligence Messages postés 46 Statut Membre
 
oui merci beaucoup pour ta reponse j'ai tres bien compris
mais enfaite comment faire pour ajouter une nouvelle celulle a la premiere , et pour que le pointeure pointe sur la cellule suivante?
merci d'avence.
0
Gorgo13 Messages postés 12 Statut Membre 23
 
#include<stdio.h>
#include<stdlib.h>
struct maillon
{
int valeur;
struct maillon *suivant;
};

typedef struct maillon cellule;

void ajouter_cellule(cellule *cellule_courante)
{
cellule_courante->suivant = (cellule*)calloc(sizeof(cellule),1);
}

void main()
{
cellule *L=NULL;
L=(cellule *)(malloc sizeof(cellule));
scanf("%d\n",&L->valeure);
//L->suivant=NULL;

int nb_cell_a_ajouter = 10;

cellule *tmp_cell = L;
for (int i=0;i<nb_cell_a_ajouter;i++)
{
ajouter_cellule(tmp_cell);
tmp_cell = tmp_cell->suivant;
}
}

...comme ca ca devrait marcher. L'autre exercice tres utile est d'ecrire le code pour supprimer une cellule particuliere dans la liste chainee. Essaye de la faire tout seul... c'est comme ca que j'ai appris comment manipuler les pointeurs.
0
lami20j Messages postés 21644 Date d'inscription   Statut Modérateur, Contributeur sécurité Dernière intervention   3 570
 
0