on reprend, ca commence a etre long

master
esterfreyja 7 months ago
parent 394ec0283e
commit 84eeaf2b69

@ -15,7 +15,7 @@ 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)
$(CC) $(OBJ) -o $@
# génération des .a partir des .cpp et .hpporrespondants :
obj/%.o: src/%.c

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -98,7 +98,7 @@ int r(Arbre a) //
return a->v;
}
int h(Arbre a)//
int h(Arbre a) //
{
if(vide(a))
{
@ -107,7 +107,7 @@ int h(Arbre a)//
return 1 + max(h(ag(a)), h(ad(a)));
}
bool f(Arbre a)//
bool f(Arbre a) //
{
if(vide(a))
{
@ -116,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))
{
@ -156,21 +156,21 @@ Arbre ed(Arbre a) //
return ed(ad(a));
}
int nn(Arbre a)//
int nn(Arbre a) //
{
if(vide(a))
return 0;
return 1 + nn(ag(a)) + nn(ad(a));
}
int max(int a, int b)//
int max(int a, int b) //
{
if(a >= b)
return a;
return b;
}
bool egarb(Arbre a, Arbre b)//
bool egarb(Arbre a, Arbre b) //
{
if(vide(a) && vide(b))
return true;
@ -179,7 +179,7 @@ bool egarb(Arbre a, Arbre b)//
return r(a) == r(b) && egarb(ag(a),ag(b)) && egarb(ad(a), ad(b));
}
Arbre insf(Arbre a, int x)//
Arbre insf(Arbre a, int x) //
{
if(vide(a))
{
@ -247,7 +247,7 @@ Arbre oterMax(Arbre a) //
return a;
}
Arbre rech(Arbre a, int x)//
Arbre rech(Arbre a, int x) //
{
if(vide(a) || r(a) == x)
return a;
@ -345,3 +345,56 @@ int deseq(Arbre a)
return 0;
return h(ag(a)) - h(ad(a));
}
Arbre insr(Arbre a, int x)
{
Couple c;
c = couper(a, x);
return reeq(e(c.c1, x, c.c2));
}
Couple couper(Arbre a, int x)
{
Couple c;
Couple d;
if(vide(a))
{
c.c1 = arbreNouv();
c.c2 = arbreNouv();
return c;
}
if(x == r(a))
{
c.c1 = ag(a);
c.c2 = ad(a);
return c;
}
if(x < r(a))
{
d = couper(ag(a), x);
c.c1 = d.c1;
c.c2 = e(d.c2, r(a), ad(a));
return c;
}
d = couper(ad(a), x);
c.c1 = e(ag(a), r(a), d.c1);
c.c2 = d.c2;
return c;
}
Arbre oterMin(Arbre a)
{
Arbre tmp;
if(vide(a))
return a;
if(vide(ag(a)))
{
tmp = ad(a);
free(a);
return tmp;
}
a->g = oterMin(a->g);
return a;
}

@ -7,33 +7,42 @@ typedef struct maillon
int v;
} Maillon, *Arbre;
Arbre arbreNouv(void);
bool vide(Arbre a);
void afficherRacine(int v, int k);
Arbre e(Arbre a, int x, Arbre b);
void afficherArbre(Arbre a);
void afficherArb(Arbre a, int k);
Arbre ag(Arbre a);
Arbre ad(Arbre a);
int r(Arbre a);
int max(int a, int b);
int nn(Arbre a);
bool f(Arbre a);
int nf(Arbre a);
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);
typedef struct
{
Arbre c1;
Arbre c2;
} Couple;
Arbre arbreNouv(void);//
bool vide(Arbre a);//
void afficherRacine(int v, int k);//
Arbre e(Arbre a, int x, Arbre b);//
void afficherArbre(Arbre a);//
void afficherArb(Arbre a, int k);//
Arbre ag(Arbre a);//
Arbre ad(Arbre a);//
int r(Arbre a);//
int max(int a, int b);//
int nn(Arbre a);//
bool f(Arbre a);//
int nf(Arbre a);//
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);//
Arbre insr(Arbre a, int x);//
Couple couper(Arbre a, int x);//
Arbre oterMin(Arbre a);//

@ -31,15 +31,16 @@ void testTri(bool a)
int main(void)
{
Arbre Arbre1 = arbreNouv();
Arbre1 = insf(Arbre1, 5);
Arbre1 = insf(Arbre1, 6);
Arbre1 = insf(Arbre1, 7);
/*Arbre1 = insf(Arbre1, 8);
Arbre1 = insf(Arbre1, 9);
Arbre1 = insf(Arbre1, 11);
Arbre1 = insf(Arbre1, 10);
Arbre1 = insf(Arbre1, 12);*/
Arbre1 = insf(Arbre1, 9);
Arbre1 = insf(Arbre1, 8);
Arbre1 = insf(Arbre1, 7);
Arbre1 = insf(Arbre1, 6);
Arbre1 = insf(Arbre1, 5);
afficherArbre(Arbre1);
oterMin(Arbre1);
afficherArbre(Arbre1);
testTri(trie(Arbre1));
viderArbre(Arbre1);
return 0;
}

@ -15,7 +15,7 @@ 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)
$(CC) $(OBJ) -o $@ #$(SAN)
# génération des .a partir des .cpp et .hpporrespondants :
obj/%.o: src/%.c

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

@ -33,7 +33,7 @@ void testGraphe()
g = adjs(g, 3);
g = adjs(g, 6);
// g = adjs(g, 3); marche pas (normal)
g = adjs(g, 3);
g = adjs(g, 9);
g = adjs(g, 8);
g = adjs(g, 15);
@ -52,19 +52,18 @@ void testGraphe()
g = adja(g, 9, 6);
g = adja(g, 9, 15);
g = adja(g, 23, 15);
// Test existe
// if(exa(g, 3, 5))
// printf("exa marche pas\n");
// else
// printf("exa marche\n");
// if(exa(g, 3, 6))
// printf("exa marche\n");
// else
// printf("exa marche pas\n");
if(exa(g, 3, 5))
printf("exa marche pas\n");
else
printf("exa marche\n");
if(exa(g, 3, 6))
printf("exa marche\n");
else
printf("exa marche pas\n");
afficherGraphe(g);
g = supa(g, 9, 6);
afficherGraphe(g);
// g = sups(g, 15); fonctionne pas (normal)
g = sups(g, 15);
g = supa(g, 3, 6);
g = sups(g, 3);
afficherGraphe(g);

Loading…
Cancel
Save