#ifndef FONCTIONS_H_INCLUDED
#define FONCTIONS_H_INCLUDED
typedef struct {
int num;
int tempsOp;
char code[10];
} Travail;
typedef struct cellule {
Travail trav;
struct cellule* suiv;
} Cellule;
typedef struct cellule* LSC;
typedef struct cellule* Pile;
Travail saisir();
LSC ajouter_travail(LSC L, Travail T);
int afficher_Liste(LSC L);
LSC inserer_Travail(LSC L, Travail T);
LSC supprimer_Travail(LSC L, int numero);
Travail max_temps_op(LSC L);
Pile emplier_Travaux(Pile P, LSC *L);
void consulter_pile(Pile P);
#endif // FONCTIONS_H_INCLUDED
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "Fonctions.h"
Travail saisir() {
Travail nouveauTravail;
printf("Saisir le num�ro du travail : ");
scanf("%d", &[Link]);
printf("Saisir le temps op�ratoire : ");
scanf("%d", &[Link]);
printf("Saisir le code du travail : ");
scanf("%s", [Link]);
return nouveauTravail;
}
LSC ajouter_travail(LSC L, Travail T) {
Cellule* nouvelleCellule = (Cellule*)malloc(sizeof(Cellule));
if (nouvelleCellule == NULL) {
printf("Erreur: M�moire insuffisante.\n");
return L;
}
nouvelleCellule->trav = T;
nouvelleCellule->suiv = NULL;
if (L == NULL) {
return nouvelleCellule;
}
Cellule* courant = L;
while (courant->suiv != NULL) {
courant = courant->suiv;
}
courant->suiv = nouvelleCellule;
return L;
}
int afficher_Liste(LSC L) {
int count = 0;
printf("Liste des travaux :\n");
while (L != NULL) {
printf("Num�ro : %d, Temps op�ratoire : %d, Code : %s\n", L->[Link], L-
>[Link], L->[Link]);
L = L->suiv;
count++;
}
printf("Nombre total de travaux : %d\n", count);
return count;
}
LSC inserer_Travail(LSC L, Travail T) {
Cellule* prec = NULL;
Cellule* courant = L;
while (courant != NULL) {
if (strcmp(courant->[Link], [Link]) == 0) {
Cellule* nouvelleCellule = (Cellule*)malloc(sizeof(Cellule));
if (nouvelleCellule == NULL) {
printf("Erreur: M�moire insuffisante.\n");
return L;
}
nouvelleCellule->trav = T;
if (prec == NULL) {
nouvelleCellule->suiv = L;
L = nouvelleCellule;
} else {
prec->suiv = nouvelleCellule;
nouvelleCellule->suiv = courant;
}
return L;
}
prec = courant;
courant = courant->suiv;
}
printf("Erreur: Le code op�ratoire du travail � ajouter n'existe pas d�j� dans
la liste des travaux.\n");
return L;
}
LSC supprimer_Travail(LSC L, int numero) {
if (L == NULL) {
printf("La liste est vide.\n");
return NULL;
}
if (L->[Link] == numero) {
Cellule* temp = L;
L = L->suiv;
free(temp);
return L;
}
Cellule* prec = L;
Cellule* courant = L->suiv;
while (courant != NULL) {
if (courant->[Link] == numero) {
prec->suiv = courant->suiv;
free(courant);
return L;
}
prec = courant;
courant = courant->suiv;
}
printf("Aucun travail avec le num�ro %d n'a �t� trouv� dans la liste.\n",
numero);
return L;
}
Travail max_temps_op(LSC L) {
if (L == NULL) {
Travail travailDefaut = {0, 0, ""};
return travailDefaut;
}
Travail maxTempsOp = L->trav;
L = L->suiv;
while (L != NULL) {
if (L->[Link] > [Link]) {
maxTempsOp = L->trav;
}
L = L->suiv;
}
return maxTempsOp;
}
Pile emplier_Travaux(Pile P, LSC *L) {
if (*L == NULL) {
printf("La liste est vide, aucun travail � empiler.\n");
return P;
}
Travail maxTempsOp = max_temps_op(*L);
*L = supprimer_Travail(*L, [Link]);
Cellule* nouvellePile = (Cellule*)malloc(sizeof(Cellule));
if (nouvellePile == NULL) {
printf("Erreur: M�moire insuffisante.\n");
return P;
}
nouvellePile->trav = maxTempsOp;
nouvellePile->suiv = P;
return nouvellePile;
}
void consulter_pile(Pile P) {
if (P == NULL) {
printf("La pile est vide.\n");
} else {
printf("Sommet de la pile : Num�ro %d, Temps op�ratoire %d, Code %s\n", P-
>[Link], P->[Link], P->[Link]);
}
}
#include <stdio.h>
#include <stdlib.h>
#include "Fonctions.h"
int main() {
LSC listeTravaux = NULL;
Pile pileTravaux = NULL;
int choix;
do {
printf("\nMenu :\n");
printf("1. Ajouter un travail\n");
printf("2. Afficher la liste des travaux\n");
printf("3. Ins�rer un nouveau travail\n");
printf("4. Supprimer un travail\n");
printf("5. Empiler les travaux par temps op�ratoire\n");
printf("6. Consulter la pile\n");
printf("0. Quitter\n");
printf("Choix : ");
scanf("%d", &choix);
switch (choix) {
case 1: {
printf("\nAjout d'un travail :\n");
Travail nouveauTravail = saisir();
listeTravaux = ajouter_travail(listeTravaux, nouveauTravail);
break;
}
case 2:
printf("\nListe des travaux :\n");
afficher_Liste(listeTravaux);
break;
case 3: {
printf("\nIns�rer un nouveau travail :\n");
Travail nouveauTravail = saisir();
listeTravaux = inserer_Travail(listeTravaux, nouveauTravail);
break;
}
case 4: {
int numero;
printf("\nSupprimer un travail :\n");
printf("Entrez le num�ro du travail � supprimer : ");
scanf("%d", &numero);
listeTravaux = supprimer_Travail(listeTravaux, numero);
break;
}
case 5:
pileTravaux = emplier_Travaux(pileTravaux, &listeTravaux);
break;
case 6:
printf("\nPile des travaux :\n");
consulter_pile(pileTravaux);
break;
case 0:
printf("Fin du programme.\n");
break;
default:
printf("Choix invalide. Veuillez choisir � nouveau.\n");
break;
}
} while (choix != 0);
return 0;
}