円形のlinkedlistにはほとんど問題がありません:最後に要素(整数)を挿入したいです。私の関数は最後に要素を追加しますが、リンクリストは実際には循環していません (私はこの印象を持っています)。これは、私が使用する構造の .h です。
struct liste_circulaire {
int val;
struct liste_circulaire *suivant; /* suivant = next element */
};
typedef struct liste_circulaire liste;
int main(void) {
liste *l, *deb;
deb = (liste *)malloc(sizeof(liste));
l = deb;
l -> suivant = deb; /* suivant = next element */
ajouter_element(l,0);
ajouter_element(l,1);
ajouter_element(l,2);
ajouter_element(l,3);
affiche(l,l->suivant);
printf("%d\n",l->suivant->suivant->suivant->suivant->suivant->val);
return 0;
}
void ajouter_element(liste *l,int x) {
liste *deb = l; /* with this line, I have a pointeur on the first element of my list */
while(l->suivant != deb) {
l = l -> suivant;
}
l -> suivant = (liste *)malloc(sizeof(liste));
l = l -> suivant;
l -> val = x;
l -> suivant = deb;
}
void affiche(liste *l,liste *deb) {
if(l == deb) {
printf(" Fin\n");
return;
}
printf(" %d -->",deb->val);
affiche(l,deb->suivant);
}
私のメインでは、リストの最初の要素を出力するように要求すると乱数がありますが、私の例ではリストの最初の値が 0 です。フランス人学生) ありがとう!