Liste chainé
api08
Messages postés
41
Statut
Membre
-
KX Messages postés 19031 Statut Modérateur -
KX Messages postés 19031 Statut Modérateur -
Bonjour,
je fais un programme en langage c qui comporte une liste doublement chainé et 2 structures:
typedef struct _Dliste {
struct _Dliste *next;
struct _Dliste *prev;
void * info;
}Dliste;
typedef struct {
char nom_pers[6];
int age;
}personne;
typedef struct {
char nom_entreprise[6];
Dliste* liste_personne;
}entreprise;
l'ensemble d'entreprise est une dliste d'entreprise.
je n'arrive pas à ajouter une entreprise à la dliste entrepise, je ne sais pas comment affecter les valeurs dans dliste personne car le programme n'accepte pas
"e->liste_personne->nom_pers" si vous pouvez m'aider .
merci d'avance
je fais un programme en langage c qui comporte une liste doublement chainé et 2 structures:
typedef struct _Dliste {
struct _Dliste *next;
struct _Dliste *prev;
void * info;
}Dliste;
typedef struct {
char nom_pers[6];
int age;
}personne;
typedef struct {
char nom_entreprise[6];
Dliste* liste_personne;
}entreprise;
l'ensemble d'entreprise est une dliste d'entreprise.
je n'arrive pas à ajouter une entreprise à la dliste entrepise, je ne sais pas comment affecter les valeurs dans dliste personne car le programme n'accepte pas
"e->liste_personne->nom_pers" si vous pouvez m'aider .
merci d'avance
A voir également:
- Liste chainé
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Chaine tnt gratuite sur mobile - Guide
- Chaine radio - Télécharger - Médias et Actualité
6 réponses
ça fonctionne pas, j'ai essayé de faire un transtypage:
personne*sp;
sp=(personne *)e->liste_personne->info;
mais chauqe fois que j'éxecute le programme affiche ça:
"...Access violation reading location..."
personne*sp;
sp=(personne *)e->liste_personne->info;
mais chauqe fois que j'éxecute le programme affiche ça:
"...Access violation reading location..."
Voici comment bien commencer (prends la fonction initialiser comme exemple) :
#include "stdlib.h"
#include "string.h"
//////////////////////////////
struct strDListe;
typedef struct strDListe
{
strDListe* next;
strDListe* prev;
void* info;
} *DListe;
#define szDListe sizeof(struct strDListe)
//////////////////////////////
typedef struct strPersonne
{
char nom_pers[6];
int age;
} *Personne;
#define szPersonne sizeof(struct strPersonne)
//////////////////////////////
typedef struct strEntreprise
{
char nom_entreprise[6];
DListe liste_personne;
} *Entreprise;
#define szEntreprise sizeof(struct strEntreprise)
//////////////////////////////
void initialiser(Entreprise &entreprise, const char* nomEntreprise)
{
entreprise = (Entreprise) malloc(szEntreprise); // allocation mémoire
strcpy(entreprise->nom_entreprise, nomEntreprise);
entreprise->liste_personne = NULL;
}
//////////////////////////////
int main()
{
return 0;
}
merci kx pour votre réponse
lorsque j'éxecute mon prgramme ce message s'affiche :
Unhandled exception at 0x01291c96 in projet.exe: 0xC0000005: Access violation writing location 0xcdcdcdcd.
au niveau de cette instruction:
e->liste_personne=e->liste_personne->next;
lorsque j'éxecute mon prgramme ce message s'affiche :
Unhandled exception at 0x01291c96 in projet.exe: 0xC0000005: Access violation writing location 0xcdcdcdcd.
au niveau de cette instruction:
e->liste_personne=e->liste_personne->next;
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Tu n'as probablement pas initialisé la liste en mémoire !
Il faut faire l'allocation dynamique, tu peux par exemple surcharger initialiser
Ce code marche chez moi :
Remarque : de même qu'on alloue la mémoire, il faut penser à la désallouer quand on ne s'en sert plus.
Il faut faire l'allocation dynamique, tu peux par exemple surcharger initialiser
Ce code marche chez moi :
int main()
{
Personne p;
initialiser(p,"Jeff",32);
Entreprise e;
initialiser(e,"CCM");
initialiser(e->liste_personne,p,NULL,NULL);
e->liste_personne=e->liste_personne->next;
return 0;
}
Remarque : de même qu'on alloue la mémoire, il faut penser à la désallouer quand on ne s'en sert plus.