gpt4 book ai didi

c - 不工作单链表 C

转载 作者:行者123 更新时间:2023-11-30 16:52:52 25 4
gpt4 key购买 nike

我现在很糟糕。我的 list 不起作用!我知道存在一个问题,就是将我的 ptr 处理为函数,而不是实际使用真正的函数,但我不明白如何才能按照我的意愿完成这项工作。

PS。我还看到,如果我将头脑作为全局值(value),那就没问题了。但我想要获得函数,我可以将其称为特定列表。

这里是向 blamk 列表添加元素的函数。我连这个功能都无法工作。我尝试使用双指针,但现在我来这里寻求帮助。

   #include<stdio.h>
#include<stdlib.h>

struct node
{
int data;
struct node *next;
};

void add( int num,struct node * head )
{
struct node *temp;
temp=(struct node *)malloc(sizeof(struct node));
temp->data=num;
if (head== NULL)
{
head=temp;
head->next=NULL;
}
else
{
temp->next=head;
head=temp;
}
}

int main()
{
struct node *head;
head=NULL;
add(20,head);
if(head==NULL) printf("List is Empty\n");

return 0;
}

UPD:我自己使用双指针的方法:

    #include<stdio.h>
#include<stdlib.h>

struct node
{
int data;
struct node *next;
};

void add( int num, struct node **head )
{
struct node **temp;
temp=(struct node **)malloc(sizeof(struct node*));
(*temp)->data=num;
if (*head== NULL)
{
*head=*temp;
(*head)->next=NULL;
}
else
{
(*temp)->next=head;
*head=temp;
}

}

int main()
{
struct node *head;
head=NULL;
add(20,&head);
if(head==NULL) printf("List is Empty\n");

return 0;
}

最佳答案

改变

struct node **temp;
temp=(struct node **)malloc(sizeof(struct node*));
(*temp)->data=num;
if (*head== NULL)
{
*head=*temp;
(*head)->next=NULL;
}

struct node *temp;
temp=(struct node *)malloc(sizeof(struct node));
(temp)->data=num;
if (*head== NULL)
{
*head=temp;
(*head)->next=NULL;
}

您遇到段错误的原因是因为在 malloc 中,您分配了 sizeof(struct node*),这对于指针来说基本上是足够的大小,并且没有任何意义所以。

另外,如果您计划添加更多节点,请更改 add 中 else 的逻辑。

关于c - 不工作单链表 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41087452/

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