From 68e37ae98407e4dac9b3c1d4f1a81923ad1a313e Mon Sep 17 00:00:00 2001 From: trmartinek Date: Wed, 28 Sep 2022 17:26:20 +0200 Subject: [PATCH] arbre pas fini, debut graphe pas compris --- arbre/src/.nfs0000000005a119d20000001d | Bin 12288 -> 0 bytes arbre/src/es | Bin 17176 -> 0 bytes graphe/Makefile | 26 ++++ graphe/src/graphe.c | 202 +++++++++++++++++++++++++ graphe/src/graphe.h | 31 ++++ 5 files changed, 259 insertions(+) delete mode 100644 arbre/src/.nfs0000000005a119d20000001d delete mode 100755 arbre/src/es create mode 100644 graphe/Makefile create mode 100644 graphe/src/graphe.c create mode 100644 graphe/src/graphe.h diff --git a/arbre/src/.nfs0000000005a119d20000001d b/arbre/src/.nfs0000000005a119d20000001d deleted file mode 100644 index bab554d658bfdd87b837c2eed65c75cadc118bf3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12288 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 HPf`36cK5(x diff --git a/graphe/Makefile b/graphe/Makefile new file mode 100644 index 0000000..35dcc5a --- /dev/null +++ b/graphe/Makefile @@ -0,0 +1,26 @@ +#CC : le compilateur a utiliser +CC=gcc + +#CFLAGS : les options de compilation (en C++ moderne, voir les warning,...) +CFLAGS= -Wall -Werror -Wextra + +SAN= -fsanitize=leak,address + +# les fichiers sources : tous les fichiers présents dans src/ +SRC=$(wildcard src/*.c src/*.h) + +# les fichiers objets (.o) +OBJ=$(patsubst src/%.c,obj/%.o,$(SRC)) + + +#edition des liens : génération de l'exécutaba partir des .o +bin/exe: $(OBJ) + $(CC) $(OBJ) -o $@ $(SAN) + +# génération des .a partir des .cpp et .hpporrespondants : +obj/%.o: src/%.c + $(CC) $(CFLAGS) -c $< -o $@ + +#nettoyage : destruction des .o et de l'exécutable +clean: + rm obj/*.o bin/exe diff --git a/graphe/src/graphe.c b/graphe/src/graphe.c new file mode 100644 index 0000000..97f1a43 --- /dev/null +++ b/graphe/src/graphe.c @@ -0,0 +1,202 @@ +#include "graphe.h" + +Graphe graphNouve(void) +{ + return NULL; +} + +Graphe adjs(Graphe g, int s) +{ + if(vide(g)) + { + return adjt(g, s); + } + if(x < g->s) + { + return adjt(g, s); + } + if(x == g -> s) + { + return g; + } + g -> suiv = adjs(g -> suiv, s); + return g; +} + +Graphe adjt(Graphe g, int x) +{ + Maillong *m; + + m = (Maillong *)malloc(sizeof(Maillong)); + if(m == NULL) + { + printf("Probleme malloc adjt"); + exit(1); + } + m -> s = x; + m -> suiv = g; + m -> succ = listeNouv(); +} + +Liste listeNouv(void) +{ + return NULL; +} + +bool vide(Graphe g) +{ + return g == NULL; +} + +bool exist(Graphe g, int x) +{ + if(vide(g)) + { + return false; + } + if(x < g -> s) + { + return false; + } + if(x == g -> s) + { + return true; + } + return exist(g -> suiv, x); +} + +Graphe adja(Graphe g, int x, int y) +{ + Maillon *aux = g; + + if(!exist(g, x) || !exist(g, y)) + { + return g; + } + while(g -> s != x) + { + g = g -> suiv; + } + g -> succ = inserer(g -> succ, y); + return aux; +} + +Graphe supa(Graphe g, int x, int y) +{ + Maillon *aux = g; + + if(!exa(g, x, y)) + { + return g; + } + while(g -> s != x) + { + g = g -> suiv; + } + g -> succ = supprimer(g -> succ, y); + return aux; +} + +Graphe sups(Graphe g, int x, int y) +{ + if(di(g, x) != 0 || de(g, x) != 0) + { + return g; + } + return sups1(Graphe g, int x); +} + +Graphe sups1(Graphe g, int x) +{ + if(vide(g)) + { + return g; + } + if(x < g -> s) + { + return g; + } + if(x == g -> s) + { + return supst(g); + } + g -> suiv = sups1(g -> suiv, x); + return g; +} + +int de(Graphe g, int x) +{ + if(vide(g)) + { + return 0; + } + if(!exs(g,x)) + { + return 0; + } + while(g -> v != x) + { + g = g -> suiv; + } + return longueur(g -> succ); +} + +int di(Graphe g, int x) +{ + int cpt; + + cpt = 0; + while(!vide(g)) + { + if(appartient(g -> succ, x)) + { + cpt++; + } + g = g -> suiv; + } + return cpt; +} + +Graphe supst(Graphe g) +{ + Maillon *m; + + m = g; + g = g -> suiv; + free(m); + return g; +} + +void affichage(Graphe g) +{ + FILE *flot; + Graphe aux = g; + Liste l1; + + flot = fopen("graphe.txt", "w"); + if(!flot) + { + printf("probleme ouverture graphe.txt"); + exit(1); + } + fprintf(flot, "digraph family\n"); + while(!vide(g)) + { + fprintf(flot, "%d[label=\"%d\"]\n"g -> s, g -> s); + g = g -> suiv; + } + while(!vide(aux)) + { + while(l1 != NULL) + { + fprintf(flot, "%d->%d\n", aux -> s, l1 -> v); + l1 = l1 -> suiv; + } + aux = aux -> suiv; + } + fprintf(flot, "}\n"); + fclose(flot); + system("dotty graphe.txt"); +} + +/*Liste fct(Graphe g, Liste e, Liste l)*/ diff --git a/graphe/src/graphe.h b/graphe/src/graphe.h new file mode 100644 index 0000000..ba8cfa1 --- /dev/null +++ b/graphe/src/graphe.h @@ -0,0 +1,31 @@ +#include +#include +#include + +typedef struct maillong +{ + struct maillong *suiv; + int s; + Liste succ; +} Maillong, *Graphe; + +typedef struct maillonl +{ + int v; + struct maillonl *suiv; +} Maillonl, *Liste; + +Graphe adjs(Graphe g, int s); +Graphe graphNouv(void); +Graphe adjt(Graphe g, int x); +bool vide(Graphe g); +bool exist(Graphe g, int x); +Graphe adja(Graphe g, int x, int y); +Graphe supa(Graphe g, int x, int y); +Graphe sups(Graphe g, int x, int y); +Graphe sups(Graphe g, int x); +int de(Graphe g, int x); +int di(Graphe g, int x); +Graphe supst(Graphe g); +void affichage(Graphe g); +