From 006e2ca09e85636d9ae92dcc903d899a5bb53fef Mon Sep 17 00:00:00 2001 From: esterfreyja Date: Mon, 2 Oct 2023 10:10:42 +0200 Subject: [PATCH] arbre quasi sans fuite --- arbre/bin/exe | Bin 21896 -> 26504 bytes arbre/obj/arbre.o | Bin 5808 -> 12440 bytes arbre/obj/test.o | Bin 1664 -> 2720 bytes arbre/src/arbre.c | 243 +++++++++++++++++++++++++++++++++++++++------ arbre/src/arbre.h | 13 +++ arbre/src/test.c | 42 +++++++- graphe/src/graph.c | 115 +++++++++++++++++++++ graphe/src/graph.h | 32 ++++++ 8 files changed, 409 insertions(+), 36 deletions(-) create mode 100644 graphe/src/graph.c create mode 100644 graphe/src/graph.h diff --git a/arbre/bin/exe b/arbre/bin/exe index a50af289cc960db6cd9ebfc4cccb3ca448c52195..539f137bfc6296df512534f1b3375c42acfadef4 100755 GIT binary patch literal 26504 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 diff --git a/arbre/obj/arbre.o b/arbre/obj/arbre.o index 1d340260df4d353c5dd2ac29edae3e4e81332c97..fb44e54d3968ee03bfc59d5461e925e127ff6c72 100644 GIT binary patch literal 12440 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 diff --git a/arbre/obj/test.o b/arbre/obj/test.o index 52b484e925f02fbb9980e2e695d72dc6aabf6929..534f8762bf8e550527db34e1d86c44c3f885f38a 100644 GIT binary patch literal 2720 zcmchY&ubGw6vtnh+G=guSbreY!y^8w*d^(qplC@NlLm|})D#hfWRq^%&}LIMn^J#a z!5Dx%Btj3;lO8?xA_#gBJoHek@9oaB(@FLs;)CgX?=#;wGntv4K1^m( zZGix=1z-erGo}Ff&fPfXhA{|1H%z4)U(%1hhZ|eZlH1DSG1)~6lU9e5fvCHePMQl|qk;7ObaY;LO)hv_^ zON&PIAw4=cJRl-%C^8g{M57UaBeVjvz}-m*EQJI8-JSba@IX%>qeg}@fOt>%X`fs0R7ZEM9e(Vnobq7Hn@Bv^N{+PMhtv5t zTM(p6Ep-QhcBI*YKv!n3k+M%(r@ME^da;G~O5N*_V6waJ!zX=s-iMn$92~sfdeL>s8OV)gCPw3#+(asMBbm)*mX~xMyI>I z<5@pJG`a}~u`xeI5RLUzLpI>KCVfh9*7KfT^U-G&{YjDE^3g9U`XQ0u^U*(6^mP7Y z4bL^L|E0v~F7iISkvRP(=IcKEvk!NlQtYFBK7@_O`6=o9B>qd{A&Ga1e>ODEVTo%P zlhOWDV~dG^c|_!Sg>$~F@D-7RUb|Cq@YU68j_vtbj%;(@&>eHh0e#wV4A2X;8t8V_ zON!M>#k8=`sye1VHa<02bBy8~3aHGS&6RAULZ8V$F%3tdEmB{e7&5Y>V*k9%({fCn zz6aXd7&h6~2%>F@`YwzqOhzbX%kG4DTP`hBg=Z&h4~ zyb#j)Q7zZ=`O!4$+*C3v;HFpyy_E;BsrAIvvqJ=Faeo#lkxbnddK+5RZ;ACAQZ0pQ F{co!~co6^q delta 560 zcmZ1=+Q2(O!>oas0S+9%EC&W225yE>kItta&2JQ5fW$mHU4OtBA3VB4KTLcmqVU3_ z+x3M<=W&Px5_<#G<64RKNVvGKR#ow9Mp;)FMZa2t!$B3XI9XzzK2` z5U>C-7ZCsX4*^0TK_EaE*M2N?@ #include "arbre.h" -Arbre arbreNouv(void) +Arbre arbreNouv(void) // { return NULL; } -void viderArbre(Arbre a) +void viderArbre(Arbre a) // { if(vide(a)) { @@ -18,12 +18,12 @@ void viderArbre(Arbre a) free(a); } -bool vide(Arbre a) +bool vide(Arbre a) // { return a == NULL; } -void afficherRacine(int v, int k) +void afficherRacine(int v, int k) // { int i; @@ -33,10 +33,10 @@ void afficherRacine(int v, int k) printf("---"); i++; } - printf("%d\n", v); + printf(">%d\n", v); } -Arbre e(Arbre a, int x, Arbre b) +Arbre e(Arbre a, int x, Arbre b) // { Maillon *m; @@ -52,23 +52,23 @@ Arbre e(Arbre a, int x, Arbre b) return m; } -void afficherArbre(Arbre a) +void afficherArbre(Arbre a) // { afficherArb(a, 0); } -void afficherArb(Arbre a, int k) +void afficherArb(Arbre a, int k) // { if(vide(a)) { return; } - afficherArb(ad(a), ++k); + afficherArb(ad(a), k + 1); afficherRacine(r(a), k); - afficherArb(ag(a), ++k); + afficherArb(ag(a), k + 1); } -Arbre ag(Arbre a) +Arbre ag(Arbre a) // { if(vide(a)) { @@ -78,7 +78,7 @@ Arbre ag(Arbre a) return a->g; } -Arbre ad(Arbre a) +Arbre ad(Arbre a) // { if(vide(a)) { @@ -88,7 +88,7 @@ Arbre ad(Arbre a) return a->d; } -int r(Arbre a) +int r(Arbre a) // { if(vide(a)) { @@ -98,7 +98,7 @@ int r(Arbre a) return a->v; } -int h(Arbre a) +int h(Arbre a)// { if(vide(a)) { @@ -107,16 +107,7 @@ int h(Arbre a) return 1 + max(h(ag(a)), h(ad(a))); } -int max(int a, int b) -{ - if(a > b) - { - return a; - } - return b; -} - -bool f(Arbre a) +bool f(Arbre a)// { if(vide(a)) { @@ -125,7 +116,7 @@ bool f(Arbre a) return vide(ag(a)) && vide(ad(a)); } -int nf(Arbre a) +int nf(Arbre a)// { if(vide(a)) { @@ -138,29 +129,219 @@ int nf(Arbre a) return nf(ag(a)) + nf(ad(a)); } -Arbre eg(Arbre a) +Arbre eg(Arbre a) // { if(vide(a)) { return a; } - if(vide(ag(0))) + if(vide(ag(a))) { - return e(arbreNouv(), r(a), arbreNouv()); + return a; } return eg(ag(a)); } -Arbre ed(Arbre a) +Arbre ed(Arbre a) // { if(vide(a)) { return a; } - if(vide(ad(0))) + if(vide(ad(a))) { - return e(arbreNouv(), r(a), arbreNouv()); + return a; } return ed(ad(a)); } + +int nn(Arbre a)// +{ + if(vide(a)) + return 0; + return 1 + nn(ag(a)) + nn(ad(a)); +} + +int max(int a, int b)// +{ + if(a >= b) + return a; + return b; +} + +bool egarb(Arbre a, Arbre b)// +{ + if(vide(a) && vide(b)) + return true; + if(vide (a) || vide(b)) + return false; + return r(a) == r(b) && egarb(ag(a),ag(b)) && egarb(ad(a), ad(b)); +} + +Arbre insf(Arbre a, int x)// +{ + if(vide(a)) + { + return e(arbreNouv(), x, arbreNouv()); + } + if (x == r(a)) + return a; + if (x < r(a)) + { + a->g = insf(a->g, x); + return reeq(a); + } + a->d = insf(a->d, x); + return reeq(a); +} + +Arbre supp(Arbre a, int x) // +{ + Arbre tmp; + + if(vide(a)) + return a; + if(x == r(a)) + { + if(vide(ag(a))) + { + tmp = a->d; + free(a); + return tmp; + } + if(vide(ad(a))) + { + tmp = a->g; + free(a); + return tmp; + } + tmp = e(oterMax(a->g), r(ed(a->g)), a->d); + free(a); + return tmp; + } + if(x < r(a)) + { + tmp = e(supp(a->g, x), r(a), a->d); + free(a); + return tmp; + } + tmp = e(a->g, r(a), supp(a->d, x)); + free(a); + return tmp; +} + +Arbre oterMax(Arbre a) // +{ + Arbre tmp; + + if(vide(a)) + return a; + if(vide(ad(a))) + { + tmp = a->g; + free(a); + return tmp; + } + a->d = oterMax(a->d); + return a; +} + +Arbre rech(Arbre a, int x)// +{ + if(vide(a) || r(a) == x) + return a; + if(x < r(a)) + return rech(ag(a), x); + return rech(ad(a), x); +} +bool trie(Arbre a) // +{ + bool b1; + bool b2; + Arbre tmp; + + b1 = false; + b2 = false; + if(vide(a)) + return true; + if(vide(ag(a))) + b1 = true; + else + { + tmp = ed(ag(a)); + b1 = r(tmp) < r(a); + } + if(vide(ad(a))) + b2 = true; + else + { + tmp = eg(ad(a)); + b2 = r(tmp) > r(a); + } + return b1 && b2 && trie(ag(a)) && trie(ad(a)); +} + +Arbre rd(Arbre a) +{ + Arbre tmp; + + if(vide(a)) + { + printf("arbre gauche vide pour retournement droit\n"); + exit(1); + } + tmp = e(ag(ag(a)), r(ag(a)), e(ad(ag(a)), r(a), ad(a))); + free(a); + return tmp; +} + +Arbre rg(Arbre a) +{ + Arbre tmp; + + if(vide(a)) + { + printf("arbre droit vide pour retournement gauche\n"); + exit(1); + } + tmp = e(e(ag(a), r(a), ag(ad(a))), r(ad(a)), ad(ad(a))); + free(a); + return tmp; +} + +Arbre rgd(Arbre a) +{ + if(vide(a)) + return a; + a->g = rg(a->g); + return rd(a); +} + +Arbre rdg(Arbre a) +{ + if(vide(a)) + return a; + a->d = rd(a->d); + return rg(a); +} + +Arbre reeq(Arbre a) +{ + if(deseq(a) == 2 && 0 <= deseq(ag(a))) + a = rd(a); + if(deseq(a) == -2 && deseq(ad(a)) <= 0) + a = rg(a); + if(deseq(a) == 2 && -1 == deseq(ag(a))) + a = rgd(a); + if(deseq(a) == -2 && 1 == deseq(ad(a))) + a = rdg(a); + return a; +} + +int deseq(Arbre a) +{ + if(vide(a)) + return 0; + return h(ag(a)) - h(ad(a)); +} diff --git a/arbre/src/arbre.h b/arbre/src/arbre.h index be12e1f..6581b05 100644 --- a/arbre/src/arbre.h +++ b/arbre/src/arbre.h @@ -24,3 +24,16 @@ Arbre eg(Arbre a); Arbre ed(Arbre a); int h(Arbre a); void viderArbre(Arbre a); +int nn(Arbre a); +bool egarb(Arbre a, Arbre b); +Arbre insf(Arbre a, int x); +Arbre supp(Arbre a, int x); +Arbre oterMax(Arbre a); +Arbre rech(Arbre a, int x); +bool trie(Arbre a); +Arbre rd(Arbre a); +Arbre rg(Arbre a); +Arbre rgd(Arbre a); +Arbre rdg(Arbre a); +Arbre reeq(Arbre a); +int deseq(Arbre a); diff --git a/arbre/src/test.c b/arbre/src/test.c index 6c7575d..88f6b24 100644 --- a/arbre/src/test.c +++ b/arbre/src/test.c @@ -1,13 +1,45 @@ #include "arbre.h" #include +void testEg(bool a) +{ + if(a) + printf("EgArb ok\n"); + else + printf("EgArb nope\n"); + return; +} + +void testFeuille(bool a) +{ + if(a) + printf("c'est une feuille\n"); + else + printf("c'est un baobab\n"); + return; +} + +void testTri(bool a) +{ + if(a) + printf("arbre trié\n"); + else + printf("arbre non trié\n"); + return; +} + int main(void) { Arbre Arbre1 = arbreNouv(); - Arbre Arbre2 = arbreNouv(); - - Arbre Arbre3 = e(Arbre1, 5, Arbre2); - afficherArbre(Arbre3); - viderArbre(Arbre3); + Arbre1 = insf(Arbre1, 5); + Arbre1 = insf(Arbre1, 6); + Arbre1 = insf(Arbre1, 7); + /*Arbre1 = insf(Arbre1, 8); + Arbre1 = insf(Arbre1, 9); + Arbre1 = insf(Arbre1, 10); + Arbre1 = insf(Arbre1, 12);*/ + afficherArbre(Arbre1); + testTri(trie(Arbre1)); + viderArbre(Arbre1); return 0; } diff --git a/graphe/src/graph.c b/graphe/src/graph.c new file mode 100644 index 0000000..c88ced2 --- /dev/null +++ b/graphe/src/graph.c @@ -0,0 +1,115 @@ +#include "graph.h" + +Liste listenouv(void) +{ + return NULL; +} + +bool videList(Liste l) +{ + return l == NULL; +} + + +Liste insTList(Liste l, int x) +{ + Maillon* maill; + + maill = (Maillon*)malloc(sizeof(Maillon)); + if(maill == NULL) + { + printf("Pb malloc\n"); + exit(1); + } + maill->v = x; + maill->suiv = l; + return maill; +} + +Liste insList(Liste l, int x) +{ + if(videList(l)) + return insTList(l, x); + if(x < l->v) + return insTList(l,x); + if(x == l->v) + return l; + l->suiv = insList(l->suiv, x); + return l; +} + +Liste supTList(Liste l) +{ + Maillon* aux; + + if(videList(l)) + { + printf("Opération interdite\n"); + exit(1); + } + aux = l; + l = l->suiv; + free(aux); + return l; +} + +Liste supList(Liste l, int x) +{ + if(videList(l)) + return l; + if(x < l->v) + return l; + if(x == l->v) + return supTList(l); + l->suiv = supList(l->suiv, x); + return l; +} + +int tList(Liste l) +{ + if(videList(l)) + { + printf("Opération interdite\n"); + exit(1); + } + return l->v; + +} + +bool rechList(Liste l, int x) +{ + if(videList(l)) + return false; + if(x < l->v) + return false; + if(x == l->v) + return true; + return rechList(l->suiv, x); +} + +int lgList(Liste l) +{ + if(videList(l)) + return 0; + return 1 + lgList(l->suiv); +} + +Liste addQList(Liste l, int x) +{ + if(videList(l)) + return insTList(l,x); + l->suiv = addQList(l->suiv, x); + return l; +} + +void afficherList(Liste l) +{ + if(videList(l)) + { + printf("\n"); + return; + } + printf("%d\n", l->v); + afficherList(l->suiv); +} + diff --git a/graphe/src/graph.h b/graphe/src/graph.h new file mode 100644 index 0000000..5a20f54 --- /dev/null +++ b/graphe/src/graph.h @@ -0,0 +1,32 @@ +#include +#include +#include +#include + + +typedef struct maillon +{ + int v; + struct maillon *suiv; +} Maillon, *Liste; + + +typedef struct maillonG +{ + int v; + struct maillonG *suiv; + Liste l; +} MaillonG, *Graphe; + + +Liste listenouv (void); +bool videList (Liste l); +Liste insTList (Liste l, int x); +Liste insList (Liste l, int x); +Liste supTList (Liste l); +Liste supList (Liste l, int x); +int tList (Liste l); +bool rechList (Liste l, int x); +int lgList (Liste l); +Liste addQList (Liste l, int x); +void afficherList (Liste l);