this code creates a "loop", where the first element point back to nothing and points to the next element (if there is one), if not, it points to nothing
typedef struct noeud
{
struct noeud* point_suivant;
struct noeud* point_precedent;
int valeur;
int n;
}t_noeud;
typedef struct anneau
{
t_noeud* noeud;
int nb_points;
}t_anneau;
this is t_noeud_init
t_noeud* t_noeud_init(const int valeur) {
t_noeud* nouveau_noeud = (t_noeud*)malloc(sizeof(t_noeud));
if (nouveau_noeud == NULL) {
printf("EXIT_FAILURE");
return NULL;
}
nouveau_noeud->valeur = valeur;
nouveau_noeud->point_suivant = NULL;
nouveau_noeud->point_precedent = NULL;
return nouveau_noeud;
}
this is t_noeud_add
t_noeud* t_noeud_add(const int valeur, t_noeud* noeud_precedent) {
t_noeud* nouveau_noeud = (t_noeud*)malloc(sizeof(t_noeud));
if (nouveau_noeud == NULL) {
printf("EXIT_FAILURE");
return NULL;
}
noeud_precedent->point_suivant = nouveau_noeud;
nouveau_noeud->valeur = valeur;
nouveau_noeud->point_suivant = NULL;
nouveau_noeud->point_precedent = noeud_precedent;
return nouveau_noeud;
}
this is t_anneau_init
t_anneau* t_anneau_init() {//remplie de zero
t_anneau* nouveau_anneau = (t_anneau*)malloc(sizeof(t_anneau));
if (nouveau_anneau == NULL) {
printf("EXIT_FAILURE");
return NULL;
}
nouveau_anneau->noeud = t_noeud_init(zero);
nouveau_anneau->noeud->n = 0;
nouveau_anneau->nb_points = 0;
nouveau_anneau->noeud->point_suivant =
t_noeud_add(zero, nouveau_anneau->noeud);
nouveau_anneau->noeud->point_suivant->n = 1;
nouveau_anneau->nb_points = nouveau_anneau->nb_points + 1;
nouveau_anneau->noeud->point_suivant->point_suivant =
t_noeud_add(zero, nouveau_anneau->noeud->point_suivant);
nouveau_anneau->noeud->point_suivant->point_suivant->n = 2;
nouveau_anneau->nb_points = nouveau_anneau->nb_points + 1;
nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant =
t_noeud_add(zero, nouveau_anneau->noeud->point_suivant->point_suivant);
nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->n = 3;
nouveau_anneau->nb_points = nouveau_anneau->nb_points + 1;
nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->point_suivant =
t_noeud_add(zero, nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant);
nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->point_suivant->n = 4;
nouveau_anneau->nb_points = nouveau_anneau->nb_points + 1;
nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->point_suivant->point_suivant =
t_noeud_add(zero, nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->point_suivant);
nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->point_suivant->point_suivant->n = 5;
nouveau_anneau->nb_points = nouveau_anneau->nb_points + 1;
nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->point_suivant->point_suivant->point_suivant =
t_noeud_add(zero, nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->point_suivant->point_suivant);
nouveau_anneau->noeud->point_suivant->point_suivant->point_suivant->point_suivant->point_suivant->point_suivant->n = 6;
nouveau_anneau->nb_points = nouveau_anneau->nb_points + 1;
return nouveau_anneau;
}
this is a giant piece of code and that is why i would like to automate it but what i've tried does'nt work.
i tried someething like this:
for (int i = 0; i < 6; i++) {
nouveau_anneau->noeud->point_suivant = t_noeud_add(zero, nouveau_anneau->noeud);
nouveau_anneau->nb_points = nouveau_anneau->nb_points + 1;
nouveau_anneau->noeud = nouveau_anneau->noeud->point_suivant;
}
where it would build upon itself but cant quite seem to make it work.
any suggestions?