no save
Assistance
Achat
News

Forum | programmation
Langage C pointeurs, creation de liste.
mamiemando, le jeu. 30 mars 2006 à 10:48:29
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
PrécédentUn Gars
mars 06
Un Gars
mars 06
Suivant
REPONSES
mamiemando
mars 06
Un Gars
mars 06
mamiemando
mars 06
Un Gars
mars 06
mamiemando
mars 06
Un Gars
mars 06
mamiemando
mars 06
Un Gars
mars 06
mamiemando
avr. 06
Drayell / Ank[58]f1x : Webmaster, Coder(C/C++, Asm), Designer
avr. 06
Version Web
Réalisé par RedShift
no save