// gcc -Wall g1g2g3g4.c -g -std=gnu99 #include #define nba 7 typedef enum {A, B, C, D, E, nbs} sommet; // A=0, B=1, C=2, D=3, E=4, nbs=5 typedef enum {faux,vrai} bool, graphe1[nbs][nbs]; graphe1 g1={{0, 1, 1, 0, 0}, // A->B A->C {0, 0, 1, 0, 1}, // B->C B->E {1, 0, 0, 0, 1}, // C->A C->E {0, 0, 0, 0, 0}, // {1, 0, 0, 0, 0}}; // E->A typedef int graphe2[nba+nbs+1]; graphe2 g2={/* A-> */ B, C, /* B-> */ C, E, /* C-> */ A, E, /* E-> */ A, 0,2,4,6,6,7}; #define lim (g2+nba) typedef struct maillon maillon, *liste, *graphe3[nbs]; struct maillon { sommet s; liste suite; } m1={C,0}, m2={B,&m1}, m3={E,0}, m4={C,&m3}, m5={E,0}, m6={A,&m5}, m7={A,0}; graphe3 g3={&m2,&m4,&m6,0,&m7}; typedef sommet graphe4[nba*2]; graphe4 g4={A, B, C, E, A, C, B, // origines des arcs B, C, E, A, C, A, E}; // extrémités des arcs #define ext (g4+nba) typedef int suite_tete[nba+nbs]; #define tete (suite+nba) void setsuite(graphe4 g4, suite_tete suite) { for(sommet s=0;s%c ",s+'A',t+'A'); } void affg1(graphe1 g1) { for(sommet s=0;st est dans g1 affarc(s,t); // on écrit s->t printf("\n"); } void affg2(graphe2 g2) { for(sommet s=0;ssuite) affarc(s,p->s); printf("\n"); } void affg4(graphe4 g4) { for(int i=0;i=0;i=suite[i]) affarc(s,ext[i]); printf("\n"); } int deg_sor1(graphe1 g1, sommet s) { int c=0; for(sommet t=0;tsuite) c++; return c; } int deg_sor4(graphe4 g4, sommet s) { int c=0; for(int i=0;i=0;i=suite[i]) c++; return c; } void g1g4(graphe1 g1, graphe4 g4) { int j=0; for(sommet s=0;ssuite) g4[j]=s, ext[j++]=p->s; } void g4g1(graphe4 g4, graphe1 g1) { for(sommet s=0;s