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 -
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.
#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:
- Explications sur les structures de donnees
- Fuite données maif - Guide
- Effacer les données de navigation sur android - Guide
- Trier des données excel - Guide
- Sauvegarde des données - Guide
- Données personnelles - Accueil - Windows
4 réponses
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?
{
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?
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.
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.
#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.
#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.