Skip to content
Snippets Groups Projects
Verified Commit f1100b68 authored by orestis.malaspin's avatar orestis.malaspin
Browse files

updated for CI

parent 492a2b5b
Branches
No related tags found
No related merge requests found
sorted_list_partiel
sorted_list_full
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
#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;
}
#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;
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment