gpt4 book ai didi

循环链表

转载 作者:太空宇宙 更新时间:2023-11-04 07:32:05 25 4
gpt4 key购买 nike

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

最佳答案

您的程序因此打印了一个随机数:

liste *l, *deb;
deb = (liste *)malloc(sizeof(liste));
l = deb;
l -> suivant = deb;

列表中的第一个元素是您正确分配但未提供任何编号的节点。您应该尝试添加:

l -> val = 0; 

并摆脱:

ajouter_element(l,0);

这应该可以解决您的问题。

关于循环链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12848073/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com