Listes chainees
flash109
Messages postés
90
Statut
Membre
-
Ravachol Messages postés 568 Statut Membre -
Ravachol Messages postés 568 Statut Membre -
Bonjour,
J’essaye de comprendre comment marche les listes chaînées en langage C. J’ai fait un petit programme mais il ne marche pas et je vois pas ou est l’erreur. Si elle saute aux yeux de l’un d’ente vous ça serait cool.
Merci.
//definition.h
typedef struct liste *ptr_liste;
typedef struct liste
{
double info;
ptr_liste suivant;
}liste;
//main.c
#include <stdio.h>
#include <stdlib.h>
#include "definition.h"
int main(void)
{
ptr_liste L1=NULL;
ptr_liste courant=NULL;
L1 = (ptr_liste)malloc (sizeof(liste));
courant=L1;
courant->suivant=NULL;
courant=courant->suivant;
courant=(ptr_liste)malloc (sizeof(liste));
courant->suivant=NULL;
}
J’essaye de comprendre comment marche les listes chaînées en langage C. J’ai fait un petit programme mais il ne marche pas et je vois pas ou est l’erreur. Si elle saute aux yeux de l’un d’ente vous ça serait cool.
Merci.
//definition.h
typedef struct liste *ptr_liste;
typedef struct liste
{
double info;
ptr_liste suivant;
}liste;
//main.c
#include <stdio.h>
#include <stdlib.h>
#include "definition.h"
int main(void)
{
ptr_liste L1=NULL;
ptr_liste courant=NULL;
L1 = (ptr_liste)malloc (sizeof(liste));
courant=L1;
courant->suivant=NULL;
courant=courant->suivant;
courant=(ptr_liste)malloc (sizeof(liste));
courant->suivant=NULL;
}
A voir également:
- Listes chainees
- Listes déroulantes excel - Guide
- Listes déroulantes en cascade excel - Guide
- Listes whatsapp - Guide
- WhatsApp : vous pouvez maintenant créer et gérer des listes de discussions - Accueil - Messagerie instantanée
- Contacts et listes ✓ - Forum Yahoo mail
3 réponses
bonjour!!
Là, il faut que tu mettes un pointeur sur le suivant!! sinon, ce n'est pas une liste chainée!! ;-)
Maily :-))))
ragondin, va au coin!
typedef struct liste
{
double info;
ptr_liste * suivant;
}liste;
Là, il faut que tu mettes un pointeur sur le suivant!! sinon, ce n'est pas une liste chainée!! ;-)
Maily :-))))
ragondin, va au coin!
J'essaye maintenant de passer une liste chainée en paramétre d'entrée sortie mais la ça bug.
Si vous voyez encore un petite erreur ça serais cool.
Merci.
//definition.h
typedef struct liste *ptr_liste;
typedef struct liste
{
long info;
ptr_liste *suivant;
}liste;
//main.c
#include <stdio.h>
#include <stdlib.h>
#include "definition.h"
#include "fonction1.h"
int main(void)
{
ptr_liste L1=NULL;
ptr_liste courant=NULL;
fonction1(&L1);
courant=L1;
printf("%ld\n",courant->info);
}
//fonction1.c
#include <stdio.h>
#include "definition.h"
void fonction1 (ptr_liste *L1)
{
ptr_liste courant=NULL;
texte = (ptr_liste)malloc (sizeof(liste));
courant=L1;
courant->suivant=NULL;
courant->info=1;
courant->suivant=(ptr_liste)malloc (sizeof(liste));
courant=courant->suivant;
courant->info=2;
courant->suivant=NULL;
}
Si vous voyez encore un petite erreur ça serais cool.
Merci.
//definition.h
typedef struct liste *ptr_liste;
typedef struct liste
{
long info;
ptr_liste *suivant;
}liste;
//main.c
#include <stdio.h>
#include <stdlib.h>
#include "definition.h"
#include "fonction1.h"
int main(void)
{
ptr_liste L1=NULL;
ptr_liste courant=NULL;
fonction1(&L1);
courant=L1;
printf("%ld\n",courant->info);
}
//fonction1.c
#include <stdio.h>
#include "definition.h"
void fonction1 (ptr_liste *L1)
{
ptr_liste courant=NULL;
texte = (ptr_liste)malloc (sizeof(liste));
courant=L1;
courant->suivant=NULL;
courant->info=1;
courant->suivant=(ptr_liste)malloc (sizeof(liste));
courant=courant->suivant;
courant->info=2;
courant->suivant=NULL;
}
Salut,
ptr_liste étant un pointeur sur une liste, par rapport à la suite de ton code suivant ne doit pas être déclaré avec un * car dans ce cas tu te retrouves avec un pointeur de pointeur sur une liste.
D'où sort texte ? ;-)
Tu as, à juste raison, déclaré L1 comme une adresse d'adresse de liste mais tu ne lui affectes jamais l'adresse de la structure que tu créer dans la fonction.
}
La petite modif dans le printf devrais permettre de constater le bon fonctionnement.
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)
ptr_liste étant un pointeur sur une liste, par rapport à la suite de ton code suivant ne doit pas être déclaré avec un * car dans ce cas tu te retrouves avec un pointeur de pointeur sur une liste.
typedef struct liste
{
long info;
ptr_liste suivant;
}liste;
D'où sort texte ? ;-)
Tu as, à juste raison, déclaré L1 comme une adresse d'adresse de liste mais tu ne lui affectes jamais l'adresse de la structure que tu créer dans la fonction.
void fonction1 (ptr_liste *L1)
{
ptr_liste courant=NULL;
courant = (ptr_liste)malloc (sizeof(liste));
*L1=courant;
courant->suivant=NULL;
courant->info=1;
courant->suivant=(ptr_liste)malloc (sizeof(liste));
courant=courant->suivant;
courant->info=2;
courant->suivant=NULL;
}
La petite modif dans le printf devrais permettre de constater le bon fonctionnement.
int main(void)
{
ptr_liste L1=NULL;
ptr_liste courant=NULL;
fonction1(&L1);
courant=L1;
printf("%ld : %ld\n",courant->info, courant->suivant->info);
}
A++
C'est pas parce qu'ils sont nombreux à avoir tort
qu'ils ont raison! (COLUCHE)