gpt4 book ai didi

c - C 中的链接列表不打印最后一个值

转载 作者:行者123 更新时间:2023-11-30 21:31:05 26 4
gpt4 key购买 nike

我正在尝试在 C 中实现链接列表,其中我在列表末尾插入节点,插入值后,除了最后一个值之外的所有值都会打印。这是代码:

list_t *add(list_t *l,int e)
{
list_t *head;

if(l == NULL)
{
l = malloc(sizeof(list_t));
l->val = e;
l->next = NULL;
return l;
}

head = l;

while(l->next != NULL)
l=l->next;

l->next = malloc(sizeof(list_t));
l=l->next;
l->val = e;
l->next = NULL;

return head;
}

这是主函数的实现:

int main()
{
list_t *ints=NULL;
list_t *temp;
int i, choice;

while(1){
printf("1. Enter\n2. Show List\n3. Exit\n\n");
scanf("%d", &choice);
switch(choice){
case 1:
printf("Enter item\n");
scanf("%d", &i);
ints = add(ints,i);
break;
case 2:
temp = ints;
while(temp->next != NULL)
{
printf("%d\n",temp->val);
temp=temp->next;
}
break;
case 3:
default:
exit(0);

}
}

return 0;
}

最佳答案

这一行

while(temp->next != NULL)

明确表示“当您到达指向列表末尾的元素时停止”(即当您到达最后一个元素但在使用它之前停止)。

改为使用

while(temp != NULL)

上面写着“当您不再出现在列表中时停止”。

关于c - C 中的链接列表不打印最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19750973/

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