add PPP_Com, Droit, Algo, Analyse and PPP

master
Antoine PEREDERII 2 years ago
parent f8b84bbf59
commit dd94b6f343

Binary file not shown.

@ -16,11 +16,13 @@ Booleen estReseauVide(Reseau r) {
void afficherReseau(Reseau r) { void afficherReseau(Reseau r) {
Noeud * tmp = r; Noeud * tmp = r;
Arc * tmpa;
while(tmp != NULL) { while(tmp != NULL) {
printf("%d :\n", tmp->num); printf("%d :\n", tmp->num);
while(tmp->listeArcs != NULL) { tmpa = tmp->listeArcs;
printf("\t-> %d \n", tmp->listeArcs->ext->num); while(tmpa != NULL) {
tmp->listeArcs = tmp->listeArcs->suiv; printf("\t-> %d \n", tmpa->ext->num);
tmpa = tmpa->suiv;
} }
tmp = tmp->suiv; tmp = tmp->suiv;
} }
@ -96,29 +98,23 @@ CodeRetour ajouterArc(Reseau r, int dep, int arr) {
return OK; return OK;
} }
CodeRetour supprimerArc(Reseau r, int dep, int arr) { /// precondition d'usage, cette fonction ne peut etre appelé que si on est sur que l'arc n'est pas vide.
Noeud * ptDep, * ptArr; CodeRetour supprimerPtArc(Noeud *ptDep, Noeud *ptArr) {
Arc * tmpa, * tmp; Arc * tmpa = NULL, * tmp = NULL;
ptDep = rechPtSurNoeud(r, dep);
if(ptDep == NULL) return PB_NOEUD_DEP_NON_EXISTANT;
ptArr = rechPtSurNoeud(r, arr);
if(ptArr == NULL) return PB_NOEUD_ARR_NON_EXISTANT;
if(rechercherArcPt(ptDep, ptArr) == NON) return PB_ARC_NON_EXISTANT;
if(ptDep->listeArcs->ext == ptArr) {
tmpa = ptDep->listeArcs; tmpa = ptDep->listeArcs;
if(tmpa->ext == arr) {
ptDep->listeArcs = tmpa->suiv; ptDep->listeArcs = tmpa->suiv;
free(tmpa);
return OK; return OK;
} }
else { else {
tmpa = ptDep->listeArcs->suiv; tmpa = ptDep->listeArcs->suiv;
tmp = ptDep->listeArcs; tmp = ptDep->listeArcs;
while(tmpa != NULL) { while(tmpa != NULL) {
if(tmpa->ext == arr) { if(tmpa->ext == ptArr) {
tmp->suiv = tmpa->suiv; tmp->suiv = tmpa->suiv;
ptDep->listeArcs = tmp; free(tmpa);
return OK; return OK;
} }
tmpa = tmpa->suiv; tmpa = tmpa->suiv;
@ -127,3 +123,37 @@ CodeRetour supprimerArc(Reseau r, int dep, int arr) {
} }
return NON; return NON;
} }
CodeRetour supprimerArc(Reseau r, int dep, int arr) {
Noeud * ptDep, * ptArr;
ptDep = rechPtSurNoeud(r, dep);
if(ptDep == NULL) return PB_NOEUD_DEP_NON_EXISTANT;
ptArr = rechPtSurNoeud(r, arr);
if(ptArr == NULL) return PB_NOEUD_ARR_NON_EXISTANT;
if(rechercherArcPt(ptDep, ptArr) == NON) return PB_ARC_NON_EXISTANT;
return supprimerPtArc(ptDep, ptArr);
}
CodeRetour supprimerArcs(Arc * arcSurNoeud) {
Arc *tmp = arcSurNoeud;
while(tmp != NULL) {
arcSurNoeud = arcSurNoeud->suiv;
free(tmp);
tmp = arcSurNoeud;
}
return OK;
}
CodeRetour supprimerNoeud(Reseau r, int noeud) {
Noeud * ptSurNoeud;
CodeRetour codeRetour;
ptSurNoeud = rechPtSurNoeud(r, noeud);
if(ptSurNoeud == NULL) return PB_NOEUD_NON_EXISTANT;
codeRetour = supprimerArcs(ptSurNoeud->listeArcs);
afficheMessageCodeRetour(codeRetour);
return OK;
}

@ -27,6 +27,7 @@ CodeRetour ajouterNoeud(Reseau * ptr, int num);
CodeRetour rechercherArc(Reseau r, int dep, int arr); CodeRetour rechercherArc(Reseau r, int dep, int arr);
CodeRetour ajouterArc(Reseau r, int dep, int arr); CodeRetour ajouterArc(Reseau r, int dep, int arr);
CodeRetour supprimerArc(Reseau r, int dep, int arr); CodeRetour supprimerArc(Reseau r, int dep, int arr);
CodeRetour supprimerNoeud(Reseau r, int noeud);

@ -7,7 +7,7 @@
void testReseau(void) { void testReseau(void) {
Reseau a = creerReseauVide(); Reseau a = creerReseauVide();
Booleen boolA; Booleen boolA;
CodeRetour codeA; CodeRetour codeA, sup;
boolA = estReseauVide(a); boolA = estReseauVide(a);
if(boolA == TRUE) printf("OK\n"); if(boolA == TRUE) printf("OK\n");
else printf("Pas OK\n"); else printf("Pas OK\n");
@ -33,7 +33,11 @@ void testReseau(void) {
ajouterArc(a, 3, 3); ajouterArc(a, 3, 3);
ajouterArc(a, 3, 2); ajouterArc(a, 3, 2);
afficherReseau(a); afficherReseau(a);
supprimerArc(a, 1, 2); sup = supprimerArc(a, 1, 2);
afficheMessageCodeRetour(sup);
afficherReseau(a);
sup = supprimerNoeud(a, 2);
afficheMessageCodeRetour(sup);
afficherReseau(a); afficherReseau(a);
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save