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) {
Noeud * tmp = r;
Arc * tmpa;
while(tmp != NULL) {
printf("%d :\n", tmp->num);
while(tmp->listeArcs != NULL) {
printf("\t-> %d \n", tmp->listeArcs->ext->num);
tmp->listeArcs = tmp->listeArcs->suiv;
tmpa = tmp->listeArcs;
while(tmpa != NULL) {
printf("\t-> %d \n", tmpa->ext->num);
tmpa = tmpa->suiv;
}
tmp = tmp->suiv;
}
@ -96,29 +98,23 @@ CodeRetour ajouterArc(Reseau r, int dep, int arr) {
return OK;
}
CodeRetour supprimerArc(Reseau r, int dep, int arr) {
Noeud * ptDep, * ptArr;
Arc * tmpa, * tmp;
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;
/// precondition d'usage, cette fonction ne peut etre appelé que si on est sur que l'arc n'est pas vide.
CodeRetour supprimerPtArc(Noeud *ptDep, Noeud *ptArr) {
Arc * tmpa = NULL, * tmp = NULL;
if(rechercherArcPt(ptDep, ptArr) == NON) return PB_ARC_NON_EXISTANT;
tmpa = ptDep->listeArcs;
if(tmpa->ext == arr) {
if(ptDep->listeArcs->ext == ptArr) {
tmpa = ptDep->listeArcs;
ptDep->listeArcs = tmpa->suiv;
free(tmpa);
return OK;
}
else {
tmpa = ptDep->listeArcs->suiv;
tmp = ptDep->listeArcs;
while(tmpa != NULL) {
if(tmpa->ext == arr) {
if(tmpa->ext == ptArr) {
tmp->suiv = tmpa->suiv;
ptDep->listeArcs = tmp;
free(tmpa);
return OK;
}
tmpa = tmpa->suiv;
@ -127,3 +123,37 @@ CodeRetour supprimerArc(Reseau r, int dep, int arr) {
}
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 ajouterArc(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) {
Reseau a = creerReseauVide();
Booleen boolA;
CodeRetour codeA;
CodeRetour codeA, sup;
boolA = estReseauVide(a);
if(boolA == TRUE) printf("OK\n");
else printf("Pas OK\n");
@ -33,7 +33,11 @@ void testReseau(void) {
ajouterArc(a, 3, 3);
ajouterArc(a, 3, 2);
afficherReseau(a);
supprimerArc(a, 1, 2);
sup = supprimerArc(a, 1, 2);
afficheMessageCodeRetour(sup);
afficherReseau(a);
sup = supprimerNoeud(a, 2);
afficheMessageCodeRetour(sup);
afficherReseau(a);
}

Binary file not shown.

Binary file not shown.

Binary file not shown.
Loading…
Cancel
Save