我對循環鏈表有點問題:我想在最後插入一個元素(整數)。我的函數在最後添加元素,但我的鏈表不是真的是圓形的(我有這種印象)。 這是.H與結構使用:Circular LinkedList
struct liste_circulaire {
int val;
struct liste_circulaire *suivant; /* suivant = next element */
};
typedef結構liste_circulaire清單當然;
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,所以如果有人能幫助我的第一個值(希望要清楚,我是法國學生)謝謝!
謝謝你你的答案,但我總是有問題的功能affiche(打印我的鏈表)。我明白第一個元素不是打印。爲了解決這個問題,我是否改變了調用函數的方式? – FiratAli
Okeeeeey我放棄遞歸版本,我有一個迫切的版本,它的工作非常weel :)感謝您的幫助 – FiratAli
謝謝!我明白爲什麼我的最後一個功能沒有奏效!我保留遞歸版本,最好使用命令式編程! – FiratAli