我对循环链表没什么问题:我想在最后插入一个元素(整数)。我的函数在末尾添加元素,但我的链表并不是真正的循环(我有这种印象)。这是 .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。所以如果有人可以帮助我(我希望清楚,我法国学生)谢谢!