Corrections sur le programme actuel
Petite amélioration :
fiche* CreerFiche(char texte[]){
fiche* ptrFiche=(fiche*)malloc(sizeof(fiche));
if (ptrFiche != NULL)
...
}
Ensuite pour être standard :
int main(){
...
return 0;
}
Corrections indispensables :
int main(){
int arret;
char reponse[256];
fiche* ptrnouveau;
fiche* ptrdebut;
...
}
(ou struct Fiche *, comme tu préfères...)
Affichage de la structure de liste
unsigned int affiche_liste(struct Fiche * f){
unsigned int nb_fiche;
for(nb_fiche=0;f;++nb_fiche){
printf("fiche %d : %s\n",f->nom);
}
return nb_fiche;
}
Suggestions
Bon apparemment ton insertion ton insertion est bizarre aussi, il faudrait que tu la corrige. Au passage plutôt que d'insérer en début de liste, je te conseille de faire plutôt un truc du genre :
struct Fiche{
char nom[256];
//... et les autres infos de la fiche
struct Fiche * suivant;
};
struct dossier{
struct Fiche * debut;
struct Fiche * fin;
//unsigned int nb_element;
};
Les insertions en fin de liste sont alors en 0(1) ainsi que les insertions en fin de liste. Mieux, tu peux généraliser les struct dossier à des listes génériques, moyennant un cast par la suite :
struct liste{
void * debut;
void * fin;
//unsigned int nb_element;
};
Tu peux éventuellement stocker dans cette structure le nombre d'éléments pour le connaître en 0(1) plutôt qu'en O(n), mais ça force à le maintenir à chaque insertion ou suppression de maillon de ta liste chaînée.
Enfin il faudrait que tu écrives une fonction qui libère la mémoire (ça consiste en gros dans la fonction d'affichage à changer le printf par un free :p)
Bonne chance


