gpt4 book ai didi

c - 显示单链表的元素

转载 作者:行者123 更新时间:2023-12-01 11:50:50 25 4
gpt4 key购买 nike

我写了一个简单的程序来遍历链表的节点。

struct node
{
int data;
struct node *next;
}*start;
start=(struct node *)malloc(sizeof(struct node));
start->next=NULL;

int main(void)
{
if(start==NULL)
{
printf("There are no elements in the list");
}

else
{
struct node *tmp;
printf("\nThe elemnets are ");
for(tmp=start;tmp!=NULL;tmp=tmp->next)
{
printf("%d\t",tmp->data);
}
}
return 0;
}

每当我尝试打印链表的元素时,即使列表为空,它也会给出输出

The elements are 5640144

我做错了什么?我是否正确声明了起始指针?

为什么我需要这样做(实际上我一开始并没有这样做,但是我的一个 friend 要求这样做)

start=(struct node *)malloc(sizeof(struct node));
start->next=NULL;

最佳答案

声明指向节点的指针 (start) 实际上并不创建节点本身 - 您需要 malloc() 来执行此操作。但是,malloc() 不会费心用合理的值填充节点,这就是为什么您在 data 中得到看似随机的值。在 start->next = NULL; 之后尝试 start->data = 42;

编辑:请参阅 ArjunShankar 关于不从函数外部调用 malloc() 的评论。

关于c - 显示单链表的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11472557/

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