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