Problème : Fonction qui insère récursivement des elements dans une liste triée
Fermé
michael0703
Messages postés
4
Date d'inscription
samedi 7 mars 2020
Statut
Membre
Dernière intervention
2 février 2021
-
1 févr. 2021 à 21:44
michael0703 Messages postés 4 Date d'inscription samedi 7 mars 2020 Statut Membre Dernière intervention 2 février 2021 - 2 févr. 2021 à 21:10
michael0703 Messages postés 4 Date d'inscription samedi 7 mars 2020 Statut Membre Dernière intervention 2 février 2021 - 2 févr. 2021 à 21:10
2 réponses
Bonsoir,
La théorie
https://perso.esiee.fr/~landschm/IN3T01/Listes%20chainees%20dynamiques.pdf
Après les TP
Fin prêt pour la maîtrise
Je ne veux pas voir ce type de déclaration har type[80] pour tester excellent devant un prof non à moins qu'il soit sympa
http://gallium.inria.fr/~maranget/X/421/poly/listes.html
Go
La théorie
https://perso.esiee.fr/~landschm/IN3T01/Listes%20chainees%20dynamiques.pdf
Après les TP
void insertion_event(Tete_ev *liste, char type[80],float time) { /* Crйation du nouvel йlйment */ Event *nouveau = malloc(sizeof(*nouveau)); Event *p=liste->premier; Event *l=liste->premier; if ( nouveau == NULL) { exit(EXIT_FAILURE); } if(liste->premier==NULL){ liste->premier=nouveau; liste->premier->time=time; strcpy(liste->premier->type,type); liste->premier->suivant=NULL; } else{ strcpy(nouveau->type,type); nouveau->time = time; if(l->suivant==NULL) { if(l->time>nouveau->time) { nouveau->suivant=l; liste->premier=nouveau; }else { liste->premier->suivant=nouveau; } }else if(liste->premier->suivant!=NULL) {if(liste->premier->suivant->suivant==NULL){ if(liste->premier->time>=nouveau->time){ l=liste->premier->suivant; liste->premier->suivant=nouveau; nouveau->suivant=l; l->suivant=NULL; } else{ l=liste->premier->suivant; l->suivant=nouveau; nouveau->suivant=NULL;} }else{ l=liste->premier->suivant; if(liste->premier->time>nouveau->time) { nouveau->suivant=liste->premier; liste->premier=nouveau; }else { p=liste->premier; l=liste->premier->suivant; while(l->suivant!=NULL ) { if(nouveau->time>p->time && nouveau->time<l->time) { p->suivant=nouveau; nouveau->suivant=l; } else { p=p->suivant; l=l->suivant; } }if(nouveau->suivant==NULL) { if(nouveau->time>p->time && nouveau->time<l->time) { p->suivant=nouveau; nouveau->suivant=l; l->suivant=NULL; } else{ l->suivant=nouveau; nouveau->suivant=NULL;} } } } }} } void suppression_event(Tete_ev *liste) { if (liste == NULL) { exit(EXIT_FAILURE); } if (liste->premier != NULL) { Event *aSupprimer = liste->premier; liste->premier = liste->premier->suivant; free(aSupprimer); } } void afficher_event(Tete_ev *liste) { if (liste == NULL) { exit(EXIT_FAILURE); } Event *actuel = liste->premier; while (actuel != NULL) { printf("type->%s \n time->%f \n", actuel->type,actuel->time); actuel = actuel->suivant; } } int nombreevent(Tete_ev *tete) { int i = 0; if(tete->premier == NULL) { return 0; } /* Sinon, tant qu'il y a encore un élément ayant la val = valeur */ while(tete->premier != NULL) { /* On incrémente */ tete->premier = tete->premier->suivant; i++; } /* Et on retourne le nombre d'occurrences */ return i; }
Fin prêt pour la maîtrise
Je ne veux pas voir ce type de déclaration har type[80] pour tester excellent devant un prof non à moins qu'il soit sympa
http://gallium.inria.fr/~maranget/X/421/poly/listes.html
Go
michael0703
Messages postés
4
Date d'inscription
samedi 7 mars 2020
Statut
Membre
Dernière intervention
2 février 2021
2 févr. 2021 à 21:10
2 févr. 2021 à 21:10
Merci pour la documentation.