gpt4 book ai didi

c - 打印单链表突然结束程序

转载 作者:行者123 更新时间:2023-11-30 19:20:20 27 4
gpt4 key购买 nike

这是我的代码,我试图让程序询问用户一些数字,然后将其打印出来。为了我的目的,我已经实现了链表的使用。该程序可以工作,但突然结束,我不知道要从代码中添加或删除什么。

#include <stdio.h>
#include <stdlib.h>
typedef struct node
{
int item;
struct node *next;
}ListNode;
void printList(ListNode *head);
int main()
{
int n;
ListNode *head = NULL;
ListNode *temp = NULL;
printf("Enter a value: ");
scanf("%d", &n);
while (n != -1)
{
if (head == NULL)
{
head = malloc(sizeof(ListNode));
temp = head;
}
else
{
temp->next = malloc(sizeof(ListNode));
temp = temp->next;
}
temp->item = n;
printf("Enter a value: ");
scanf("%d", &n);
}
while (head != NULL)
{
printf("%i\n", head->item);
head = head->next;
}
free(head);
return 0;
}

当我输入 3 个数字(例如 1、2 和 3)时,它会打印出 123,然后突然结束程序。有人可以解释一下吗?

最佳答案

您没有将最后一个元素的下一个字段设置为 NULL:

temp->item = n;
temp->next = NULL; // add this line

打印时,while (head != NULL)永远不会成立,因为head->next中有垃圾。那么你试图访问任意指针,这会导致崩溃。

关于c - 打印单链表突然结束程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22469154/

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