From f1100b6801b288626fe4f55ce02785cbd4abd793 Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Thu, 18 Nov 2021 11:03:33 +0100
Subject: [PATCH] updated for CI

---
 source_codes/sorted_lists/.gitignore          |   2 +
 source_codes/sorted_lists/Makefile            |  18 ++
 source_codes/sorted_lists/sorted_list_full.c  | 158 +++++++++---------
 .../sorted_lists/sorted_list_partiel.c        | 144 ++++++++--------
 4 files changed, 175 insertions(+), 147 deletions(-)
 create mode 100644 source_codes/sorted_lists/.gitignore
 create mode 100644 source_codes/sorted_lists/Makefile

diff --git a/source_codes/sorted_lists/.gitignore b/source_codes/sorted_lists/.gitignore
new file mode 100644
index 0000000..eea4183
--- /dev/null
+++ b/source_codes/sorted_lists/.gitignore
@@ -0,0 +1,2 @@
+sorted_list_partiel
+sorted_list_full
diff --git a/source_codes/sorted_lists/Makefile b/source_codes/sorted_lists/Makefile
new file mode 100644
index 0000000..d7822ac
--- /dev/null
+++ b/source_codes/sorted_lists/Makefile
@@ -0,0 +1,18 @@
+CC:=gcc
+# SAN:=-fsanitize=address
+CFLAGS:=-Wall -Wextra -pedantic -g $(SAN)
+LDFLAGS:=-lm $(SAN)
+
+EXECS := $(shell find . -type f -iname '*.c' | sed 's/\.c//g')
+
+all: $(EXECS)
+
+$(EXECS): %: %.c
+	$(CC) $(CFLAGS) -o $@ $< $(LDFLAGS)
+	@echo $@ >> .gitignore
+
+.PHONY: clean all
+
+clean:
+	rm -f *.o $(EXECS) .gitignore
+
diff --git a/source_codes/sorted_lists/sorted_list_full.c b/source_codes/sorted_lists/sorted_list_full.c
index 758000f..0afad52 100644
--- a/source_codes/sorted_lists/sorted_list_full.c
+++ b/source_codes/sorted_lists/sorted_list_full.c
@@ -1,110 +1,114 @@
-#include <stdio.h>
-#include <stdlib.h>
 #include <assert.h>
 #include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 
 typedef struct _element {
-   int n;
-   struct _element* suivant;
+    int n;
+    struct _element *suivant;
 } element;
-typedef element* liste;
+typedef element *liste;
 
 // Crée une liste vide
 liste liste_creer() {
-   return NULL;
+    return NULL;
 }
 
 // Teste si la liste vide
 bool liste_est_vide(liste lst) {
-   return NULL == lst;
+    return NULL == lst;
 }
 
 // Retourne un pointeur sur l'élement avant l'emplacement d'insertion;
-// ce pointeur est nul si la liste est vide ou si l'insertion est en tête de liste
-element* position(liste lst,int val) {
-   element* pos = lst;
-   if (liste_est_vide(lst) || val <= lst->n) { 
-      pos = NULL;
-   } else {
-      while (NULL != pos->suivant && val > pos->suivant->n) {
-         pos = pos->suivant;
-      }
-   }
-   return pos;
+// ce pointeur est nul si la liste est vide ou si l'insertion est en tête de
+// liste
+element *position(liste lst, int val) {
+    element *pos = lst;
+    if (liste_est_vide(lst) || val <= lst->n) {
+        pos = NULL;
+    } else {
+        while (NULL != pos->suivant && val > pos->suivant->n) {
+            pos = pos->suivant;
+        }
+    }
+    return pos;
 }
 
 // Insère un élément dans la liste triée et retourne la liste mise à jour
-liste liste_inserer(liste lst,int val) {
-   element* tmp = malloc(sizeof(element));
-   tmp->n = val;
-   element* crt = position(lst,val);
-   if (NULL == crt) { // insertion dans une liste vide ou en tête de liste
-      tmp->suivant = lst;
-      lst = tmp;
-   } else {           // insertion au milieu ou en fin de liste
-      tmp->suivant = crt->suivant;
-      crt->suivant = tmp;
-   }
-   return lst;
+liste liste_inserer(liste lst, int val) {
+    element *tmp = malloc(sizeof(element));
+    tmp->n       = val;
+    element *crt = position(lst, val);
+    if (NULL == crt) { // insertion dans une liste vide ou en tête de liste
+        tmp->suivant = lst;
+        lst          = tmp;
+    } else { // insertion au milieu ou en fin de liste
+        tmp->suivant = crt->suivant;
+        crt->suivant = tmp;
+    }
+    return lst;
 }
 
 // Extrait un élément avec la valeur <val> et retourne la liste mise à jour;
-// la liste est inchangée si elle est initialement vide 
+// la liste est inchangée si elle est initialement vide
 // ou si la valeur est absente
-liste liste_extraire(liste lst,int val) {
-   element *crt = lst, *prec = lst;
-   // boucle pour placer <val>: prec->n < val <= crt->n
-   while (NULL != crt && val > crt->n) {
-      prec = crt;
-      crt = crt->suivant;
-   }
-   // liste non-vide et <val> présente de la liste
-   if (NULL != crt && val == crt->n) {
-      if (crt == prec) { // extraction en début de liste
-         lst = lst->suivant; 
-      } else { // extraction en milieu ou fin de liste   
-         prec->suivant = crt->suivant; 
-      }  
-      free(crt);
-   }
-   return lst;
+liste liste_extraire(liste lst, int val) {
+    element *crt = lst, *prec = lst;
+    // boucle pour placer <val>: prec->n < val <= crt->n
+    while (NULL != crt && val > crt->n) {
+        prec = crt;
+        crt  = crt->suivant;
+    }
+    // liste non-vide et <val> présente de la liste
+    if (NULL != crt && val == crt->n) {
+        if (crt == prec) { // extraction en début de liste
+            lst = lst->suivant;
+        } else { // extraction en milieu ou fin de liste
+            prec->suivant = crt->suivant;
+        }
+        free(crt);
+    }
+    return lst;
 }
 
 // Retourne un pointeur sur l'élément qui contient <val> ou un pointeur nul
 // si la liste est vide ou la valeur absente
-element* liste_recherche(liste lst,int val) {
-   // à compléter
-   return NULL;
+element *liste_recherche(liste lst, int val) {
+    // à compléter
+    return NULL;
 }
 
-// Imprime le contenu de la liste  
+// Imprime le contenu de la liste
 void print(liste lst) {
-   element* crt = lst;
-   while (NULL != crt) {
-      printf("%d ",crt->n);
-      crt = crt->suivant;
-   }
+    element *crt = lst;
+    while (NULL != crt) {
+        printf("%d ", crt->n);
+        crt = crt->suivant;
+    }
 }
 
-int main(int argc, char** argv) {
-   liste lst = liste_creer();
-   char str[20];
-   do {
-      printf("Insert: ");
-      scanf("%s", str);
-      if (0 == strcmp("quit",str)) break; 
-      lst = liste_inserer(lst,atoi(str));
-      print(lst);
-      printf("\n");
-   } while (true);
-   do {
-      printf("Extract: ");
-      scanf("%s", str);
-      if (0 == strcmp("quit",str)) break;
-      lst = liste_extraire(lst,atoi(str));
-      print(lst);
-      printf("\n");
-   }  while (true);
-   return 0;
+int main(int argc, char **argv) {
+    liste lst = liste_creer();
+    char str[20];
+    do {
+        printf("Insert: ");
+        scanf("%s", str);
+        if (0 == strcmp("quit", str))
+            break;
+        lst = liste_inserer(lst, atoi(str));
+        print(lst);
+        printf("\n");
+    } while (true);
+    do {
+        printf("Extract: ");
+        scanf("%s", str);
+        if (0 == strcmp("quit", str))
+            break;
+        lst = liste_extraire(lst, atoi(str));
+        print(lst);
+        printf("\n");
+    } while (true);
+    return 0;
 }
 
diff --git a/source_codes/sorted_lists/sorted_list_partiel.c b/source_codes/sorted_lists/sorted_list_partiel.c
index 773e80f..7934f8d 100644
--- a/source_codes/sorted_lists/sorted_list_partiel.c
+++ b/source_codes/sorted_lists/sorted_list_partiel.c
@@ -1,103 +1,107 @@
-#include <stdio.h>
-#include <stdlib.h>
 #include <assert.h>
 #include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
 
 typedef struct _element {
-   int n;
-   struct _element* suivant;
+    int n;
+    struct _element *suivant;
 } element;
-typedef element* liste;
+typedef element *liste;
 
 // Crée une liste vide
 liste liste_creer() {
-   return NULL;
+    return NULL;
 }
 
 // Teste si la liste vide
 bool liste_est_vide(liste lst) {
-   return NULL == lst;
+    return NULL == lst;
 }
 
 // Retourne un pointeur sur l'élement avant l'emplacement d'insertion;
-// ce pointeur est nul si la liste est vide ou si l'insertion est en tête de liste
-element* position(liste lst,int val) {
-   element* pos = lst;
-   if (liste_est_vide(lst) || val <= lst->n) { 
-      pos = NULL;
-   } else {
-      while (NULL != pos->suivant && val > pos->suivant->n) {
-         pos = pos->suivant;
-      }
-   }
-   return pos;
+// ce pointeur est nul si la liste est vide ou si l'insertion est en tête de
+// liste
+element *position(liste lst, int val) {
+    element *pos = lst;
+    if (liste_est_vide(lst) || val <= lst->n) {
+        pos = NULL;
+    } else {
+        while (NULL != pos->suivant && val > pos->suivant->n) {
+            pos = pos->suivant;
+        }
+    }
+    return pos;
 }
 
 // Insère un élément dans la liste triée et retourne la liste mise à jour
-liste liste_inserer(liste lst,int val) {
-   element* tmp = malloc(sizeof(element));
-   tmp->n = val;
-   element* pos = position(lst,val);
-   if (NULL == pos) { // insertion dans une liste vide ou en tête de liste
-      // à compléter
-   } else {           // insertion au milieu ou en fin de liste
-      // à compléter
-   }
-   return lst;
+liste liste_inserer(liste lst, int val) {
+    element *tmp = malloc(sizeof(element));
+    tmp->n       = val;
+    element *pos = position(lst, val);
+    if (NULL == pos) { // insertion dans une liste vide ou en tête de liste
+                       // à compléter
+    } else {           // insertion au milieu ou en fin de liste
+                       // à compléter
+    }
+    return lst;
 }
 
 // Extrait un élément avec la valeur <val> et retourne la liste mise à jour;
-// la liste est inchangée si elle est initialement vide 
+// la liste est inchangée si elle est initialement vide
 // ou si la valeur est absente
-liste liste_extraire(liste lst,int val) {
-   element* prec = lst;
-   element* crt = lst;
-   // boucle pour placer <val>: prec->n < val <= crt->n
-   // à compléter
-   
-   // liste non-vide et <val> présente de la liste
-   if (NULL != crt && val == crt->n) {
-      if (crt == prec) { // extraction en début de liste
-         lst = lst->suivant; 
-      } else { // extraction en milieu ou fin de liste   
-         prec->suivant = crt->suivant; 
-      }  
-      free(crt);
-   }
-   return lst;
+liste liste_extraire(liste lst, int val) {
+    element *prec = lst;
+    element *crt  = lst;
+    // boucle pour placer <val>: prec->n < val <= crt->n
+    // à compléter
+
+    // liste non-vide et <val> présente de la liste
+    if (NULL != crt && val == crt->n) {
+        if (crt == prec) { // extraction en début de liste
+            lst = lst->suivant;
+        } else { // extraction en milieu ou fin de liste
+            prec->suivant = crt->suivant;
+        }
+        free(crt);
+    }
+    return lst;
 }
 
 // Retourne un pointeur sur l'élément qui contient <val> ou un pointeur nul
 // si la liste est vide ou la valeur absente
-element* liste_recherche(liste lst,int val) {
-   // à compléter
-   return NULL;
+element *liste_recherche(liste lst, int val) {
+    // à compléter
+    return NULL;
 }
 
-// Imprime le contenu de la liste  
+// Imprime le contenu de la liste
 void print(liste lst) {
-   //à compléter
+    //à compléter
 }
 
-int main(int argc, char** argv) {
-   liste lst = liste_creer();
-   char str[20];
-   do {
-      printf("Insert: ");
-      scanf("%s", str);
-      if (0 == strcmp("quit",str)) break; 
-      lst = liste_inserer(lst,atoi(str));
-      print(lst);
-      printf("\n");
-   } while (true);
-   do {
-      printf("Extract: ");
-      scanf("%s", str);
-      if (0 == strcmp("quit",str)) break;
-      lst = liste_extraire(lst,atoi(str));
-      print(lst);
-      printf("\n");
-   }  while (true);
-   return 0;
+int main(int argc, char **argv) {
+    liste lst = liste_creer();
+    char str[20];
+    do {
+        printf("Insert: ");
+        scanf("%s", str);
+        if (0 == strcmp("quit", str))
+            break;
+        lst = liste_inserer(lst, atoi(str));
+        print(lst);
+        printf("\n");
+    } while (true);
+    do {
+        printf("Extract: ");
+        scanf("%s", str);
+        if (0 == strcmp("quit", str))
+            break;
+        lst = liste_extraire(lst, atoi(str));
+        print(lst);
+        printf("\n");
+    } while (true);
+    return 0;
 }
 
-- 
GitLab