Liste chainées (getion des employés) langageC
xlag
Messages postés
3
Statut
Membre
-
xlag Messages postés 3 Statut Membre -
xlag Messages postés 3 Statut Membre -
Bonjour,
Merci de me proposer une solution pour cet exercice, je serai vrement heureux car (I'm realy lost :s :s)
On désire représenter par des listes chainées un ensemble d'employés caractérisés par : un code (entier), un nom (tableau de caractères) et un salaire (réel). Ecrire les fonctions suivantes :
1) Ecrire une fonction qui accepte en arguments les informations caractérisant l'employé, crée et retourne cette employé (adresse d'une structure de type liste).
2) Ecrire une fonction ajout qui accepte en arguments la tête de liste et un employé. La fonction ajoute cet employé à la fin de la liste.
3) Ecrire une fonction qui permet d'ajouter un employé au début de la liste.
4) Ecrire une fonction qui permet d'insérer un employé dans la liste de manière à ce qu'elle soit triée par ordre croissant de code (on suppose que la liste est déjà triée par ordre croissant selon le code).
5) Ecrire une fonction qui permet d'afficher les codes des employés ayant un scalaire supérieur à 5000.
6) Ecrire un programme principal de test.
Merci de me proposer une solution pour cet exercice, je serai vrement heureux car (I'm realy lost :s :s)
On désire représenter par des listes chainées un ensemble d'employés caractérisés par : un code (entier), un nom (tableau de caractères) et un salaire (réel). Ecrire les fonctions suivantes :
1) Ecrire une fonction qui accepte en arguments les informations caractérisant l'employé, crée et retourne cette employé (adresse d'une structure de type liste).
2) Ecrire une fonction ajout qui accepte en arguments la tête de liste et un employé. La fonction ajoute cet employé à la fin de la liste.
3) Ecrire une fonction qui permet d'ajouter un employé au début de la liste.
4) Ecrire une fonction qui permet d'insérer un employé dans la liste de manière à ce qu'elle soit triée par ordre croissant de code (on suppose que la liste est déjà triée par ordre croissant selon le code).
5) Ecrire une fonction qui permet d'afficher les codes des employés ayant un scalaire supérieur à 5000.
6) Ecrire un programme principal de test.
A voir également:
- Liste chainées (getion des employés) langageC
- Liste déroulante excel - Guide
- Liste code ascii - Guide
- Liste déroulante en cascade - Guide
- Liste des appareils connectés - Guide
- Site dangereux liste - Guide
2 réponses
Bonjour,
Sur le site il y a une explication des listes chaînées : https://www.commentcamarche.net/contents/114-langage-c-les-listes-chainees
Pour l'exercice la structure pourrait ressembler à ceci :
Le principe est de sauvegarder seulement l'adresse de la première structure allouée qui possédera l'adresse de la suivante (dans *next pour l'exemple) ainsi on peut retrouver les données en partant de la première :
Pour atteindre les données on utilisera la première adresse en sautant sur la suivante :
struct emp *ptr=debut;
while(ptr->next!=NULL){
//faire un job sur le ptr actuel
ptr=ptr->next;
}
Sur le site il y a une explication des listes chaînées : https://www.commentcamarche.net/contents/114-langage-c-les-listes-chainees
Pour l'exercice la structure pourrait ressembler à ceci :
struct emp{
int code;
char nom[256];
double salaire;
struct emp *next;
};
struct emp *debut;
Le principe est de sauvegarder seulement l'adresse de la première structure allouée qui possédera l'adresse de la suivante (dans *next pour l'exemple) ainsi on peut retrouver les données en partant de la première :
debut=malloc(sizeof(struct emp));//pointe sur un nouveau bloc debut->code=54; strcpy(debut->nom,"plop"); debut->salaire=350; debut->next=NULL;debut contient l'adresse de départ pour le moment la suivante est vide, et lors d'une nouvelle entrée à la suite :
struct emp *ptr; debut->next=malloc(sizeof(struct emp)); //next du debut pointe vers le nouveau bloc ptr=debut->next; //ptr sur le nouveau bloc ptr->code=34; strcpy(ptr->nom,"hello"); ptr->salaire=120; ptr->next=NULL; //pointera sur la suivante ainsi de suiteetc
Pour atteindre les données on utilisera la première adresse en sautant sur la suivante :
struct emp *ptr=debut;
while(ptr->next!=NULL){
//faire un job sur le ptr actuel
ptr=ptr->next;
}