pourquoi on fait cela => typedef Element* liste
En général, c'est seulement pour simplifier et clarifier les écritures.
Maintenant, tu pourras écrire:
void initialisation (liste *lis);
plutot que
void initialisation (Element **lis);
Personnellement je ne suis pas fan de ce genre de pratique, car dans ton cas, ça cache les "*" de tes paramètres. Et quand tu codes, tu as en général besoin de savoir combien d'étoiles il y a... Mais bon...
A mon avis, tu dois pas pouvoir compiler ton code
1 2 3 4 5
| void initialisation (Liste *liste){
liste->debut = NULL;
liste->fin = NULL;
int taille =0;
} |
Nulle part il est question dans ton code du champ "debut" ni de "fin". Declarer un entier (en fin de blocs en plus), taille pour ne pas lutiliser ensuite ne sert à rien....
Tu pourrais écrire la fonction comme ceci :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
typedef struct Element {
char Titre;
char Auteur ;
char Editeur ;
char Numero;
struct Element *suivant;
}Element;
typedef struct {
Element *debut;
Element *fin;
int taille;
}Liste;
void initialisation (Liste *lis){
lis->debut = NULL;
lis->fin = NULL;
lis->taille = 0;
}
<...>
int main(void){
Liste lst;
initialisation (&lst);
return 0;
} |
Ya encore plein d'erreurs dans ton code, pour y arriver faut que tu apprennes le C et l'algorithmique...
Partager