From ce2edfebb5a4050a11036c0f6b8b8a937d396854 Mon Sep 17 00:00:00 2001 From: Syauqi_AlifIhsan <syauqi.alif-ihsan9@etu.univ-lorraine.fr> Date: Mon, 7 Apr 2025 22:25:15 +0200 Subject: [PATCH] Le Nettoyage. Esperance. --- include/db.h | 22 ----- include/job.h | 48 ---------- include/list.h | 33 ------- include/list_elm.h | 24 ----- include/outils.h | 9 -- include/rank.h | 10 -- makefile | 38 -------- obj/db.o | Bin 10856 -> 0 bytes obj/io.o | Bin 13864 -> 0 bytes readme.md | 0 src/db.c | 74 --------------- src/io.c | 141 ---------------------------- src/job.c | 55 ----------- src/job_2.c | 111 ---------------------- src/job_3.c | 55 ----------- src/list.c | 103 --------------------- src/list_1 (1).c | 74 --------------- src/list_2.c | 226 --------------------------------------------- src/list_elm.c | 52 ----------- src/main (1).c | 32 ------- src/outils.c | 13 --- src/rank.c | 19 ---- 22 files changed, 1139 deletions(-) delete mode 100644 include/db.h delete mode 100644 include/job.h delete mode 100644 include/list.h delete mode 100644 include/list_elm.h delete mode 100644 include/outils.h delete mode 100644 include/rank.h delete mode 100644 makefile delete mode 100644 obj/db.o delete mode 100644 obj/io.o delete mode 100644 readme.md delete mode 100644 src/db.c delete mode 100644 src/io.c delete mode 100644 src/job.c delete mode 100644 src/job_2.c delete mode 100644 src/job_3.c delete mode 100644 src/list.c delete mode 100644 src/list_1 (1).c delete mode 100644 src/list_2.c delete mode 100644 src/list_elm.c delete mode 100644 src/main (1).c delete mode 100644 src/outils.c delete mode 100644 src/rank.c diff --git a/include/db.h b/include/db.h deleted file mode 100644 index c4a0157..0000000 --- a/include/db.h +++ /dev/null @@ -1,22 +0,0 @@ -#pragma once - -#include "list.h" - -/* file mode : text or binary */ -typedef enum file_mode { TEXT, BINARY } file_mode_t; - -/** - * @brief read a list from a text or binary file acording to the mode - * @param mode : TEXT or BIN - * @param data_read_fct : ptr to fct that reads datum from file fd ; fct's parameters : (fd, mode) - * @param del_fct : ptr to fct that deallocate datum's memory, ; fct's parameter (datum) - */ -list_t * read_list ( file_mode_t mode, void * (*read_fct) (), void (*del_fct) () ); - - -/** - * @brief write a list into a text or binary file acording to the mode - * @param mode : TEXT or BIN - * @param data_write_fct : ptr to fct that writes datum into file fd ; fct's parameters : (datum, fd, mode) - */ -void write_list ( list_t * L, file_mode_t mode, void (*write_fct) () ); \ No newline at end of file diff --git a/include/job.h b/include/job.h deleted file mode 100644 index a3bbc2b..0000000 --- a/include/job.h +++ /dev/null @@ -1,48 +0,0 @@ -#pragma once - -#include "list.h" -#include <stdbool.h> - -#define UNDEF -2 - -/** Des redondances possibles avec d'autres TAs ! */ -typedef struct { - char * title; // Nom de la tâche - double life; // Durée de la tâche - int input_degree; // Son degré de dépendance - int output_degree; // Les tâches qui en dépendent - int rank; // Rang de la tâche - int dyn_input_degree; // Facilité de prog - list_t * precedence; // Les tâches précédentes - list_t * posteriority; // Les tâches ultérieures - double au_plus_tot; // Date au plus tôt - double au_plus_tard; // Date au plus tard - double marge_totale; // Marge totale - double marge_libre; // Marge libre - bool critique; // Une tâche critique ? -} job_t; - -job_t * new_empty_job(); -job_t * new_job(char * title); -void free_job(job_t ** ptrJ); -void view_job ( job_t * J ); -char * get_job_title(job_t * J); -void set_job_title(job_t * J, char * title); -double get_job_life(job_t * J); -void set_job_life(job_t * J, double life); -int get_job_iDegree(job_t * J); -void set_job_iDegree(job_t * J, int iDegree); -void incr_job_iDegree(job_t * J); -void decr_job_iDegree(job_t * J); - -int get_job_oDegree(job_t * J); -void set_job_oDegree(job_t * J, int oDegree); -void incr_job_oDegree(job_t * J); -void decr_job_oDegree(job_t * J); -int get_job_rank(job_t * J); -void set_rank(job_t * J, int rank); -int titleJobCmp(job_t * J1, job_t * J2); -int iDegreeJobCmp(job_t * J1, job_t * J2); -int oDegreeJobCmp(job_t * J1, job_t * J2); -int rangJobCmp(job_t * J1, job_t * J2); - diff --git a/include/list.h b/include/list.h deleted file mode 100644 index f843d10..0000000 --- a/include/list.h +++ /dev/null @@ -1,33 +0,0 @@ -#pragma once - -#include <stdbool.h> -#include "list_elm.h" - -typedef struct list { - list_elm_t * head; - list_elm_t* tail; - int numelm; -} list_t; - -list_t * new_list(); -void del_list ( list_t * * L, void (*ptrf) () ); -bool empty_list ( list_t * L ); - -list_elm_t * get_head ( list_t * L ); -list_elm_t * get_tail ( list_t * L ); -void view_list ( list_t * L, void (*ptrf)() ); - -void cons ( list_t * L, void * data ); -void queue ( list_t * L, void * data ); -void ordered_insert ( list_t * L, void * data, int (*cmpFct)() ); - -int get_numelm(list_t * L); - -// void take_out(struct list_t * L, void * D); -void quick_sort(list_t * L, int (*cmpFct)()); -void find(list_t * L, void ** ptrKey, int (*cmpFct)(), void (*delFct)()); -void del_list(list_t ** ptrL, void (*ptrf) ()); -void clean(list_t * L); -bool is_empty(list_t * L); - - diff --git a/include/list_elm.h b/include/list_elm.h deleted file mode 100644 index 621dd32..0000000 --- a/include/list_elm.h +++ /dev/null @@ -1,24 +0,0 @@ -#pragma once - -typedef struct list_elm { - void * data; - struct list_elm * suc, * pred; -} list_elm_t; - -list_elm_t * new_list_elm ( void * data ); -/** - * @brief delete the list element E and optionnaly its datum - * @param ptrf : a ptr to fct that deallocates datum's memory ; - * if ptrf is NULL, datum is not freed - */ -void del_list_elm( list_elm_t * * E, void (*ptrf)() ); - -list_elm_t * get_suc ( list_elm_t * E ); -list_elm_t * get_pred ( list_elm_t * E ); -void * get_data ( list_elm_t * E ); - -void set_suc ( list_elm_t * E, list_elm_t * S ); -void set_pred ( list_elm_t * E, list_elm_t * P ); -void set_data ( list_elm_t * E, void * data ); - -void view_list_elm ( list_elm_t * E, void (*ptrf)() ); diff --git a/include/outils.h b/include/outils.h deleted file mode 100644 index 79f54e3..0000000 --- a/include/outils.h +++ /dev/null @@ -1,9 +0,0 @@ -#pragma once - -#define EPSILON 0.00000001// ε = 10^{-8} - -/** Integer comparaison */ -int int_cmp ( int * a, int * b ); - -/** Double comparaison */ -int double_cmp ( double * a, double * b ); \ No newline at end of file diff --git a/include/rank.h b/include/rank.h deleted file mode 100644 index 9ba383b..0000000 --- a/include/rank.h +++ /dev/null @@ -1,10 +0,0 @@ -#pragma once - -#include "list.h" - - -void ranking(list_t * G); -void prune(list_t * G); - -void marges(list_t * G); - diff --git a/makefile b/makefile deleted file mode 100644 index 8d48e77..0000000 --- a/makefile +++ /dev/null @@ -1,38 +0,0 @@ -BDIR = bin -IDIR = include -ODIR = obj -SDIR = src - -CC = gcc -# Le déboggage en toutes circonstances grâce à :: -D _DEBUG_ -# que l'on peutarêter à tout moment grâce à :: -U _DEBUG_ -CFLAGS = -Wall -I$(IDIR) -g -c -LFLAGS = -lm - -PROG = $(BDIR)/mpm - -_DEPS = job.h list.h list_elm.h outils.h #rank.h -DEPS = $(patsubst %,$(IDIR)/%,$(_DEPS)) - -_OBJS = db.o io.o job.o list.o list_elm.o main.o outils.o #rank.o -OBJS = $(patsubst %,$(ODIR)/%,$(_OBJS)) - -.PHONY : run all dirs clean delete - -run : all - ./$(PROG) - -all : dirs $(OBJS) - $(CC) -o $(PROG) $(OBJS) $(LFLAGS) - -dirs : - mkdir -p $(ODIR) $(BDIR) - -$(ODIR)/%.o : $(SDIR)/%.c $(DEPS) - $(CC) $(CFLAGS) -o $@ $< - -clean : - rm -rf $(ODIR) - -delete : clean - rm -rf $(BDIR) \ No newline at end of file diff --git a/obj/db.o b/obj/db.o deleted file mode 100644 index 02a8690f0be0218bc1f329379cdd0383219ac9fd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10856 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 Wj{&@x1DpN}Q1@R(Rtya*WFY`*tHvDw diff --git a/obj/io.o b/obj/io.o deleted file mode 100644 index 10bee52ae486bc83610bea63e627baa252d403ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13864 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 E05cv}JOBUy diff --git a/readme.md b/readme.md deleted file mode 100644 index e69de29..0000000 diff --git a/src/db.c b/src/db.c deleted file mode 100644 index b26b108..0000000 --- a/src/db.c +++ /dev/null @@ -1,74 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> -#include <assert.h> -#include "db.h" -#include "list.h" -#include "list_elm.h" - -list_t * read_list( file_mode_t mode, void * (*read_fct) (), void (*del_fct) () ) { - FILE * fd; - char fname[20]; - list_t * L = new_list(); - - if (mode == TEXT) {// Open file in TEXT mode - printf( "\t\tRead list from text file (.txt)\n\tfile name :" ); - scanf( "%s", fname ); - fd = fopen( fname, "rt" ); - } - else {// open file in BIN mode - printf( "\t\tRead list from binary file (.bin)\n\tfile name :" ); - scanf( "%s", fname ); - fd = fopen( fname, "rb" ); - } - //todo - void * datum; - while ((datum = read_fct(fd, mode)) != NULL) { - queue(L, datum); - } - - - list_elm_t * E = get_tail(L); - if (E != NULL && empty_list(E->data)) { - list_elm_t * T = get_pred(E); - if (T != NULL) { - set_suc(T, NULL); - L->tail = T; - } else { - L->head = L->tail = NULL; - } - del_list_elm(&E, del_fct); - } - - /** TODO parcourir le fichier pour y collecter les formulaires et les ranger dans la L - ATTENTION : - il est **possible** que vous créiez un élément de trop (un formulaire vide) en fin de liste. - Il faut alors penser à le supprimer grâce au code suivant : - E = get_tail (L); - struct elmlist * T = getPred(E); - set_suc(T, NULL); - L->tail = T; - del_elmlist(E, ptr_del); - */ - - - fclose(fd); - return L; - } -void write_list( list_t * L, file_mode_t mode, void (*write_fct) () ) { - FILE * fd; - char fname[20]; - if (mode == TEXT) { - printf( "\t\tWrite list to text file (.txt)\n\tfile name :"), scanf( "%s", fname ); - fd = fopen( fname, "wt" ); - } else { - printf("\t\tWrite list to binary file (.bin)\n\tfile name :"), scanf( "%s", fname ); - fd = fopen(fname, "wb" ); - } - - for (list_elm_t * elm = get_head(L); elm != NULL; elm = elm->suc){ - write_fct(elm->data, mode, fd); - } - /// @todo Parcourir L et écrire les formulaires grâce à data_write_fct - fclose(fd); -} - diff --git a/src/io.c b/src/io.c deleted file mode 100644 index aafeda6..0000000 --- a/src/io.c +++ /dev/null @@ -1,141 +0,0 @@ -#include "list.h" -#include "list_elm.h" -#include "job.h" -#include "list.h" - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -list_t * read_graph ( char * filename ) { - FILE * fd = fopen ( filename, "rt" ); - list_t * G = new_list ( ); - assert ( fd && G ); - char job_name [ BUFSIZ ]; - - while ( !feof ( fd ) ) { - - fscanf ( fd, " %s", job_name); - if ( !strcmp (job_name, "NIL" ) ) continue; - - job_t * J = new_job ( job_name ); - - /** @note - À l'appel J pointe sur le job que l'on vient de créer. - - FIND retrouve le job J dans la liste G des jobs grâce à la fonction titleJobCmp. - Si ce job n'est pas dans la liste G alors - le job pointé par J est enregistré dans G - Si ce job est déjà dans G alors - le job pointé par J est supprimé grâce à free_job - puis le pointeur de J est réassigné sur le job trouvé dans G - */ - find ( G, ( void ** ) &J, &titleJobCmp, &free_job ); - - fscanf ( fd, "%lf", &(J->life) ); - - /** @note - Enregistrement des préséances - */ - job_t * predJ; - fscanf( fd, " %s", job_name ); - while ( strcmp ( job_name, "NIL" ) ) { - predJ = new_job ( job_name ); - //SOUVIENS SI &TITTLEJOBCMP = &SETJOBTITLE - find ( G, (void **) &predJ, &titleJobCmp, &free_job ); - - ordered_insert ( predJ->posteriority, J, &titleJobCmp ); - incr_job_oDegree ( predJ ); - - ordered_insert ( J->precedence, predJ, &titleJobCmp ); - incr_job_iDegree ( J ); - - fscanf ( fd, " %s", job_name ); - } - - /** @note valeurs par défaut des autres champs */ - J->dyn_input_degree = J->input_degree; - J->rank = UNDEF; - J->au_plus_tard = UNDEF; - J->au_plus_tot = UNDEF; - J->marge_totale = UNDEF; - J->critique = false; - } - - view_list(G,&view_job); - return G; -} - -static void partition(list_t * L, elmlist_t * pivot, list_t * val_inf, list_t * val_sup, int (*cmpFct)(void*, void*)) { - for (elmlist_t * cur = L->head; cur != NULL; cur = cur->suc) { - if (cmpFct(get_data(cur), get_data(pivot)) < 0) - queue(val_inf, get_data(cur)); - else - queue(val_sup, get_data(cur)); - } -} - -void quick_sort(list_t * L, int (*cmpFct)(void*, void*)) { - assert(L && cmpFct); - - if (L->numelm > 1) { - //CONFIRMER LE STRUCT - struct list_elm_t * pivot = get_head(L); - L->head = get_suc(pivot); - pivot->pred = NULL; - pivot->suc = NULL; - - - /** @note - * La listes des données inférieures à pivot - * La listes des données supérieures à pivot - */ - list_t * val_inf_pivot = new_list(); - list_t * val_sup_pivot = new_list(); - - /** @note Déplacement des données de L dans val_inf_pivot et val_sup_pivot */ - partition(L,pivot,val_inf_pivot,val_sup_pivot,cmpFct); - - /** @note On supprimer les éléments de L sans supprimer ni L ni les jobs */ - // elmlist_t * S; - // for(elmlist_t * E = L->head; E; E = S){ - // S = E->suc; - // free(E); - // } - - /** @note - * Si la partie inf est vide alors L commence par le pivot - * Sinon on tri grâce à cmpFct la partie inf puis on ajoute en queue le pivot - */ - - - if (is_empty(val_inf_pivot)) { - L->head = pivot; - L->tail = pivot; - L->numelm = 1; - } else { - quick_sort(val_inf_pivot, cmpFct); - L->head = val_inf_pivot->head; - L->tail = val_inf_pivot->tail; - L->numelm = val_inf_pivot->numelm; - pivot->pred = L->tail; - L->tail->suc = pivot; - L->tail = pivot; - L->numelm += 1; - } - /** @note - * Si la partie sup n'est pas vide alors - * On la trie puis on la concatène à la partie inf - */ - if (!is_empty(val_sup_pivot)) { - quick_sort(val_sup_pivot, cmpFct); - val_sup_pivot->head->pred = pivot; - set_suc(pivot, val_sup_pivot->head); - L->tail = val_sup_pivot->tail; - L->numelm += val_sup_pivot->numelm; - } - free(val_inf_pivot); - free(val_sup_pivot); - } -} \ No newline at end of file diff --git a/src/job.c b/src/job.c deleted file mode 100644 index dc5002c..0000000 --- a/src/job.c +++ /dev/null @@ -1,55 +0,0 @@ -#include <stdlib.h> -#include <stdio.h> -#include <assert.h> -#include <string.h> -#include "job.h" -#include "list.h" - -job_t * new_empty_job ( ) { - job_t * J = calloc ( 1, sizeof (job_t ) ); - assert( J ); - J->precedence = new_list ( ); - J->posteriority = new_list ( ); - J->rank = UNDEF; - J->au_plus_tard = UNDEF; - J->au_plus_tot = UNDEF; - J->marge_totale = UNDEF; - J->critique = false; - return J; -} -job_t * new_job ( char * title ) { - job_t * J = new_empty_job ( ); - J->title = strdup ( title ); - return J; -} -void free_job(job_t ** ptrJ ) { - assert ( ptrJ && *ptrJ ); - if( (*ptrJ)->title ) free ( (*ptrJ)->title ); - free ( *ptrJ ); - *ptrJ = NULL; -} - -void view_job ( job_t * J ) { - printf ( "JOB %s\n\tpreceeded by [", get_job_tilte ( J ) ); - for(elmlist_t * E = get_head ( J->precedence ); E; E = get_suc ( E ) ) { - printf ( " %s", get_job_tilte ( get_data ( E ) ) ); - } - printf ( " ]\n" ); - // if ( !get_numelm ( J->posteriority ) ) printf ( "\t" ); - printf ( "\tfollowed by [" ); - for(elmlist_t * E = get_head(J->posteriority); E; E = get_suc(E)){ - printf(" %s", get_job_tilte(get_data(E))); - } - printf ( " ]\n" ); - printf ( "\tiDeg=%d\toDeg=%d\tlife=%2.2lf", J->input_degree, J->output_degree, J->life ); - printf ( "\trank=" ); - if ( J->rank == UNDEF ) printf ( "U" ); else printf ( "%d", J->rank ); - printf ( "\tearly=" ); - if(J->au_plus_tot == UNDEF ) printf("U"); else printf ( "%2.2lf",J->au_plus_tot ); - printf ( "\tlate=" ); - if(J->au_plus_tard == UNDEF ) printf("U"); else printf ( "%2.2lf",J->au_plus_tard ); - printf ( "\ttotale= " ); - if ( J->marge_totale == UNDEF ) printf("U"); else printf ( "%2.2lf", J->marge_totale ); - printf ( "\tcritical= " ); - if ( J->critique ) printf("Y\n"); else printf ( "N\n" ); -} diff --git a/src/job_2.c b/src/job_2.c deleted file mode 100644 index 76c8897..0000000 --- a/src/job_2.c +++ /dev/null @@ -1,111 +0,0 @@ -#include "job.h" -#include "list.h" -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -#include <assert.h> - -job_t * new_empty_job(){ - job_t * J = calloc ( 1, sizeof (job_t ) ); - assert( J ); - J->precedence = new_list ( ); - J->posteriority = new_list ( ); - J->rank = UNDEF; - J->au_plus_tard = UNDEF; - J->au_plus_tot = UNDEF; - J->marge_totale = UNDEF; - J->critique = false; - return J; -} - -job_t * new_job(char * title){ - job_t * J = new_empty_job ( ); - J->title = strdup ( title ); - return J; -} - -void free_job(job_t ** ptrJ){ - assert ( ptrJ && *ptrJ ); - if( (*ptrJ)->title ) free ( (*ptrJ)->title ); - free ( *ptrJ ); - *ptrJ = NULL; -} - -void view_job ( job_t * J ) { - printf ( "JOB %s\n\tpreceeded by [", get_job_tilte ( J ) ); - for(elmlist_t * E = get_head ( J->precedence ); E; E = get_suc ( E ) ) { - printf ( " %s", get_job_tilte ( get_data ( E ) ) ); - } - printf ( " ]\n" ); - // if ( !get_numelm ( J->posteriority ) ) printf ( "\t" ); - printf ( "\tfollowed by [" ); - for(elmlist_t * E = get_head(J->posteriority); E; E = get_suc(E)){ - printf(" %s", get_job_tilte(get_data(E))); - } - printf ( " ]\n" ); - printf ( "\tiDeg=%d\toDeg=%d\tlife=%2.2lf", J->input_degree, J->output_degree, J->life ); - printf ( "\trank=" ); - if ( J->rank == UNDEF ) printf ( "U" ); else printf ( "%d", J->rank ); - printf ( "\tearly=" ); - if(J->au_plus_tot == UNDEF ) printf("U"); else printf ( "%2.2lf",J->au_plus_tot ); - printf ( "\tlate=" ); - if(J->au_plus_tard == UNDEF ) printf("U"); else printf ( "%2.2lf",J->au_plus_tard ); - printf ( "\ttotale= " ); - if ( J->marge_totale == UNDEF ) printf("U"); else printf ( "%2.2lf", J->marge_totale ); - printf ( "\tcritical= " ); - if ( J->critique ) printf("Y\n"); else printf ( "N\n" ); -} - -char * get_job_title(job_t * J) { - assert(J); - return J->title; -} - -void titleJobCmp(job_t * J, char * title){ - - - -} - -void set_job_title(job_t * J, char * title) { - assert(J && title); - if(J->title) - free(J->title); - J->title = strdup(title); -} - - -double get_job_life(job_t * J) { - assert(J); - return J->life; -} - - -void set_job_life(job_t * J, double life) { - assert(J); - J->life = life; -} - - -int get_job_iDegree(job_t * J) { - assert(J); - return J->input_degree; -} - - -void set_job_iDegree(job_t * J, int iDegree) { - assert(J); - J->input_degree = iDegree; -} - - -void incr_job_iDegree(job_t * J) { - assert(J); - J->input_degree++; -} - - -void decr_job_iDegree(job_t * J) { - assert(J); - J->input_degree--; -} \ No newline at end of file diff --git a/src/job_3.c b/src/job_3.c deleted file mode 100644 index 6ac6944..0000000 --- a/src/job_3.c +++ /dev/null @@ -1,55 +0,0 @@ -#include "job.h" -#include <assert.h> -#include <stdlib.h> -#include <stdio.h> -#include <string.h> -//TOUS EST CHANGee -int get_job_oDegree(job_t * J) { - assert(J); - return J->output_degree; -} - -void set_job_oDegree(job_t * J, int oDegree) { - assert(J); - J->output_degree = oDegree; -} - -void incr_job_oDegree(job_t * J) { - assert(J); - J->output_degree++; -} - -void decr_job_oDegree(job_t * J) { - assert(J); - J->output_degree--; -} - -int get_job_rank(job_t * J) { - assert(J); - return J->rank; -} - -void set_rank(job_t * J, int rank) { - assert(J); - J->rank = rank; -} - -int titleJobCmp(job_t * J1, job_t * J2) { - assert(J1 && J2); - return strcmp(J1->title, J2->title); -} - -int iDegreeJobCmp(job_t * J1, job_t * J2) { - assert(J1 && J2); - return J1->input_degree - J2->input_degree; -} - -int oDegreeJobCmp(job_t * J1, job_t * J2) { - assert(J1 && J2); - return J1->output_degree - J2->output_degree; -} - -int rangJobCmp(job_t * J1, job_t * J2) { - assert(J1 && J2); - return J1->rank - J2->rank; -} diff --git a/src/list.c b/src/list.c deleted file mode 100644 index 7032f0b..0000000 --- a/src/list.c +++ /dev/null @@ -1,103 +0,0 @@ -#include <stdlib.h> -#include <assert.h> -#include "list.h" -#include "list_elm.h" - -list_t * new_list() { - list_t * L = calloc(1, sizeof(list_t)); - assert(L); - L->head = NULL; - L->tail = NULL; - L->numelm = 0; - return L; -} - -void del_list(list_t ** L, void (*ptr_del)(void *)) { - assert(L && *L); - list_t * list = *L; - list_elm_t * E = list->head; - while (E) { - list_elm_t * temp = E; - E = E->suc; - if(ptr_del) { - ptr_del(temp->data); - } - free(temp); - } - free(*L); - *L = NULL; -} - -bool empty_list(list_t * L) { - assert(L); - return L->numelm == 0; -} - -list_elm_t * get_head(list_t * L) { - assert(L); - return L->head; -} - -list_elm_t * get_tail(list_t * L) { - assert(L); - return L->tail; -} - -void view_list(list_t * L, void (*ptr_view)(void *)) { - assert(L && ptr_view); - for (list_elm_t * E = L->head; E != NULL; E = get_suc(E)) { - ptr_view(E->data); - } -} - -void cons(list_t * L, void * data) { - list_elm_t * E = new_list_elm(data); - E->suc = L->head; - if (L->head != NULL) { - L->head->pred = E; - } - L->head = E; - if (L->tail == NULL) { - L->tail = E; - } - L->numelm++; -} - -void queue(list_t * L, void * data) { - list_elm_t * E = new_list_elm(data); - if(empty_list(L)) { - L->head = E; - L->tail = E; - } else { - L->tail->suc = E; - E->pred = L->tail; - L->tail = E; - } - L->numelm++; -} - -void insert_after(list_t * L, void * data, list_elm_t * elm) { - if(elm == NULL) return; - list_elm_t * E = new_list_elm(data); - E->suc = elm->suc; - E->pred = elm; - if(elm->suc != NULL) { - elm->suc->pred = E; - } else { - L->tail = E; - } - elm->suc = E; - L->numelm++; -} - -void ordered_insert(list_t * L, void * data, int (*cmpFct)(void*, void*)) { - if(empty_list(L) || cmpFct(L->head->data, data) > 0) { - cons(L, data); - } else { - list_elm_t * current = L->head; - while(get_suc(current) != NULL && cmpFct(get_suc(current)->data, data) <= 0) { - current = get_suc(current); - } - insert_after(L, data, current); - } -} diff --git a/src/list_1 (1).c b/src/list_1 (1).c deleted file mode 100644 index ef9df30..0000000 --- a/src/list_1 (1).c +++ /dev/null @@ -1,74 +0,0 @@ -#include "list_1 (1).h" -#include "list" -#include <stdlib.h> -#include <stdbool.h> -#include <stdio.h> -#include <assert.h> - -typedef struct{ - elmlist_t * head; - elmlist_t * tail; - int numelm; - } list_t ; - // Create an empty list - list_t * new_list(){ - list_t * t = calloc(1, sizeof(list_t)); - assert(t); - return t; - } - // Delete list, its elements and possibly the data - //DOIT CONFIRMER LE STRUCT - void del_list(list_t ** ptrL, void (*ptrf) ()){ - assert(ptrL && *ptrL); - list_t * L = *ptrL; - if(ptrf){ - for(elmlist_t * E = L->head; E; ){ - elmlist_t * T = E; - E = E->suc; - (*ptrf)(T->data); - free(T); - } - } - } else { - for(elmlist_t * E = L->head; E ; ){ - elmlist_t * T = E; - E = E->suc; - free(T); - } - free(*ptrL); - (*ptrL) = NULL; -} - // Clean list; delete its elments but keep data and the list - void clean(list_t * L){ - assert(L); - elmlist_t *curr = L->head; - while (curr != NULL) { - elmlist_t *temp = curr; - curr = curr->suc; - free(temp); - } - L->head = NULL; - L->tail = NULL; - L->numelm = 0; -} - // Is list L empty ? - bool is_empty(list_t * L){ - assert(L); - if (L->numelm == 0) return true; - return false; - } - - elmlist_t * get_head(list_t * L){ - assert(L); - L = L->head; - return L; - } - - elmlist_t * get_tail(list_t * L){ - assert(L); - L = L->tail; - return L; - } - - - \ No newline at end of file diff --git a/src/list_2.c b/src/list_2.c deleted file mode 100644 index ed867d3..0000000 --- a/src/list_2.c +++ /dev/null @@ -1,226 +0,0 @@ -#include "list_1 (1).h" -#include "list.h" -#include <stdlib.h> -#include <stdio.h> -#include <assert.h> - -// Gimme the number of elements of L -int get_numelm(struct list_t * L){ - assert(L); - return L->numelm; -} -// Take out the data D of the list L if it is present -void take_out(struct list_t * L, void * D){ - assert(L); - elmlist_t * current = L->head; - while (current != NULL) { - if (get_data(current) == D) { - elmlist_t * p = get_pred(current); - elmlist_t * s = get_suc(current); - // Update predecessor’s successor - if (p) set_suc(p, s); - else L->head = s; // current was head - // Update successor’s predecessor - if (s) set_pred(s, p); - else L->tail = p; // current was tail - free(current); - L->numelm--; - return; - } - current = get_suc(current); - } -} - -// Add a element holding data to the head of L -void cons(struct list_t * L, void * data){ - elmlist_t * E = calloc(1, sizeof(elmlist_t)); - assert(L && E); - set_data(E, data); - set_suc(E, L->head); - set_head(L, E); - if(is_empty(L)) L->tail = E; - L->numelm += 1; - } - - - - -// Add a element holding data to the tail of L -void queue(struct list_t * L, void * data){ - assert(L); - elmlist_t * E = calloc(1, sizeof(elmlist_t)); - assert(E); - set_data(E, data); - E->suc = NULL; - if (is_empty(L)) { - E->pred = NULL; - L->head = E; - L->tail = E; - } else { - E->pred = L->tail; - L->tail->suc = E; - L->tail = E; - } - L->numelm++; - } -// Insert in L a element holding data wrt order given by cmp_ptrf -void ordered_insert(struct list_t * L, void * data, int (*cmp_ptrf)()){ - assert(L && cmp_ptrf); - elmlist_t * E = calloc(1, sizeof(elmlist_t)); - assert(E); - set_data(E, data); - // if list is empty, simply add the element - if (is_empty(L)) { - E->pred = E->suc = NULL; - L->head = L->tail = E; - L->numelm++; - return; - } -} - -// Elements qui sont moins = val_inf et le reste val_sup. -static void partition(list_t * L, elmlist_t * pivot, list_t * val_inf, list_t * val_sup, int (*cmpFct)(void*, void*)) { - for (elmlist_t * cur = L->head; cur != NULL; cur = cur->suc) { - if (cmpFct(get_data(cur), get_data(pivot)) < 0) - queue(val_inf, get_data(cur)); - else - queue(val_sup, get_data(cur)); - } -} - -void quick_sort(list_t * L, int (*cmpFct)(void*, void*)) { - assert(L && cmpFct); - - if (L->numelm > 1) { - - elmlist_t * pivot = get_head(L); - L->head = get_suc(pivot); - pivot->pred = NULL; - pivot->suc = NULL; - - - /** @note - * La listes des données inférieures à pivot - * La listes des données supérieures à pivot - */ - list_t * val_inf_pivot = new_list(); - list_t * val_sup_pivot = new_list(); - - /** @note Déplacement des données de L dans val_inf_pivot et val_sup_pivot */ - partition(L,pivot,val_inf_pivot,val_sup_pivot,cmpFct); - - /** @note On supprimer les éléments de L sans supprimer ni L ni les jobs */ - // elmlist_t * S; - // for(elmlist_t * E = L->head; E; E = S){ - // S = E->suc; - // free(E); - // } - - /** @note - * Si la partie inf est vide alors L commence par le pivot - * Sinon on tri grâce à cmpFct la partie inf puis on ajoute en queue le pivot - */ - - - if (is_empty(val_inf_pivot)) { - L->head = pivot; - L->tail = pivot; - L->numelm = 1; - } else { - quick_sort(val_inf_pivot, cmpFct); - L->head = val_inf_pivot->head; - L->tail = val_inf_pivot->tail; - L->numelm = val_inf_pivot->numelm; - pivot->pred = L->tail; - L->tail->suc = pivot; - L->tail = pivot; - L->numelm += 1; - } - /** @note - * Si la partie sup n'est pas vide alors - * On la trie puis on la concatène à la partie inf - */ - if (!is_empty(val_sup_pivot)) { - quick_sort(val_sup_pivot, cmpFct); - val_sup_pivot->head->pred = pivot; - pivot->suc = val_sup_pivot->head; - L->tail = val_sup_pivot->tail; - L->numelm += val_sup_pivot->numelm; - } - free(val_inf_pivot); - free(val_sup_pivot); - } -} - -// void quick_sort(list_t * L, int (*cmpFct)()){ - -// if (L == NULL || L->numelm < 2) -// return; - - -// elmlist_t * pivotNode = L->head; -// void * pivotData = pivotNode->data; - - -// list_t * less = new_list(); -// list_t * greater = new_list(); - - -// for (elmlist_t * cur = L->head; cur != NULL; cur = cur->suc) { - -// if (cur == pivotNode) -// continue; - -// if (cmpFct(cur->data, pivotData) < 0) -// queue(less, cur->data); -// else -// queue(greater, cur->data); -// } - - -// clean(L); - - -// quick_sort(less, cmpFct); -// quick_sort(greater, cmpFct); - -// for (elmlist_t * node = less->head; node != NULL; node = node->suc) -// queue(L, node->data); - - -// queue(L, pivotData); - -// for (elmlist_t * node = greater->head; node != NULL; node = node->suc) -// queue(L, node->data); - -// free(less); -// free(greater); -// } - - - - - -void view_list(list_t * L, void (*ptrf)()) { - assert(L && ptrf); - elmlist_t * curr = L->head; - while (curr) { - ptrf(get_data(curr)); - curr = curr->suc; - } - -} -// Return un ptr vers element else NULL -void find(list_t * L, void ** ptrKey, int (*cmpFct)(), void (*delFct)()) { - assert(L && ptrKey && cmpFct); - elmlist_t * curr = L->head; - while (curr) { - if (cmpFct(get_data(curr), *ptrKey) == 0) { - if (delFct) - delFct(ptrKey); - *ptrKey = get_data(curr); - return; - } - curr = curr->suc; - } -} diff --git a/src/list_elm.c b/src/list_elm.c deleted file mode 100644 index aa173df..0000000 --- a/src/list_elm.c +++ /dev/null @@ -1,52 +0,0 @@ -#include <stdlib.h> -#include <assert.h> -#include "list_elm.h" - -list_elm_t * new_list_elm ( void * data ){ - list_elm_t * E = calloc(1,sizeof(list_elm_t)); - assert(E); - E->data = data; - return E; -} - -void del_list_elm( list_elm_t * * E, void (*ptrf)() ){ - assert(E && *E); - if (ptrf) { - ptrf((*E)->data); - } - free(*E); - *E = NULL; -} - -list_elm_t * get_suc ( list_elm_t * E ){ - assert(E); - return E->suc; -} -list_elm_t * get_pred ( list_elm_t * E ); -void * get_data ( list_elm_t * E ){ - assert(E); - return E->data; -} - -void set_suc ( list_elm_t * E, list_elm_t * S ){ - assert(E); - E->suc = S; -} - -void set_pred ( list_elm_t * E, list_elm_t * P ){ - assert(E); - E->pred = P; -} - -void set_data ( list_elm_t * E, void * data ){ - assert(E); - E->data = data; -} - -void view_list_elm ( list_elm_t * E, void (*ptrf)() ){ - assert(E && ptrf); - for(elmlist_t * courant = E->head; courant; courant = get_suc(E)){ - void * data = E->data; - (*ptrf)(data); - } -} \ No newline at end of file diff --git a/src/main (1).c b/src/main (1).c deleted file mode 100644 index 5bb714b..0000000 --- a/src/main (1).c +++ /dev/null @@ -1,32 +0,0 @@ -#include <stdio.h> -#include <stdlib.h> - -#include "job.h" -#include "list.h" -#include "list_elm.h" - - -int main(int argc, char ** argv){ - if(argc < 2) exit(-1); - - list_t * G = read_graph(argv[1]); - printf("Liste des tâches lue\n"); - view_list(G, &view_job); - - printf("Liste des tâches triée par degré d'entrée croissant\n"); - quick_sort(G, &iDegreeJobCmp); - view_list(G,&view_job); - - printf("Liste des tâches triée par rang croissant\n"); - ranking(G); - view_list(G,&view_job); - - printf("Prune edges\n"); - prune(G); - view_list(G,&view_job); - - printf("\nMarges totales des tâches\n"); - marges(G); - view_list(G,&view_job); - return 0; -} diff --git a/src/outils.c b/src/outils.c deleted file mode 100644 index 99f432b..0000000 --- a/src/outils.c +++ /dev/null @@ -1,13 +0,0 @@ -#include "outils.h" - - - -/** Integer comparaison */ -int int_cmp(int * a, int * b){ - return *a - *b; -} - -/** Double comparaison */ -int double_cmp(double * a, double * b){ - return ((*a - *b) < -EPSILON) ? -1 : ((*a -*b) > +EPSILON) ? +1 : 0; -} diff --git a/src/rank.c b/src/rank.c deleted file mode 100644 index 1d1438c..0000000 --- a/src/rank.c +++ /dev/null @@ -1,19 +0,0 @@ -#include "rank.h" -#include "list_1 (1).h" -#include <stdio.h> -#include <stdlib.h> -#include <assert.h> - - -void ranking(list_t * G){ - -} -void prune(list_t * G){ -assert(G); - -} - -void marges(list_t * G){ -assert(G); - -} \ No newline at end of file -- GitLab