gpt4 book ai didi

c - 打印链表时出现段错误

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

这是一个简单的程序,它从用户那里获取 5 个元素并打印出来。但它在第 30 行显示段错误。请帮忙。这是我的代码。

#include<stdio.h>
#include<stdlib.h>
struct node
{
int num;
struct node * next;
};

main()
{
int i;
struct node *p,*temp,*r;
p=NULL;
temp=p;
temp=malloc(sizeof(struct node));
scanf("%d",&(temp->num));
temp->next=NULL;
for(i=0;i<4;i++)
{
while(temp->next!=NULL)
temp=temp->next;
r=malloc(sizeof(struct node));
scanf("%d",&(r->num));
r->next=NULL;
temp->next=r;
}
temp=p;
for(i=0;i<5;i++)
{
printf("%d\n",temp->num);
temp=temp->next;
}

}

最佳答案

这里

temp=p;       // p is NULL!!
for(i=0;i<5;i++)
{
printf("%d\n",temp->num); // <-- BANG!
temp=temp->next;
}

您正在将 temp 重新分配为 p,它之前声明为 NULL。因此,您正在取消引用 NULL 指针。查看您的代码,您可能甚至不需要 p只在开始时将 temp 初始化为 NULL。

关于c - 打印链表时出现段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20731028/

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