Explications sur les structures de donnees

Fermé
inteligence Messages postés 42 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 10 septembre 2011 - 15 oct. 2007 à 19:27
lami20j Messages postés 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 - 17 oct. 2007 à 07:24
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.

4 réponses

Gorgo13 Messages postés 12 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 15 novembre 2009 23
16 oct. 2007 à 08:40
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 42 Date d'inscription mercredi 29 août 2007 Statut Membre Dernière intervention 10 septembre 2011
17 oct. 2007 à 00:51
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 Date d'inscription lundi 15 octobre 2007 Statut Membre Dernière intervention 15 novembre 2009 23
17 oct. 2007 à 02:46
#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 21331 Date d'inscription jeudi 4 novembre 2004 Statut Modérateur, Contributeur sécurité Dernière intervention 30 octobre 2019 3 567
17 oct. 2007 à 07:24
0