gpt4 book ai didi

c - 不允许指向不完整类类型的指针 - 单链表

转载 作者:太空宇宙 更新时间:2023-11-04 00:43:28 27 4
gpt4 key购买 nike

我正在尝试创建一个简单的单向链表。以前,我成功地做到了这一点,没有任何错误,但是现在我遇到了错误。我怀疑由于第 23 行中的 if 语句,内存分配存在某种问题。

我尝试过的:

  1. 我在我的所有声明中都使用了类型转换,即使在 C 语言中这不是必需的。

  2. 我删除了 if 语句,但仍然遇到错误。

这是我的代码:

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

typedef struct
{
int value;
struct Product *next;

} Product;

int main()
{
int user_choice;
Product *head;

head = malloc(sizeof(Product));
head->next = NULL;
head->value = 5;

printf("\n Do you want to add a new node (0 for no, 1 for yes)? \n");
scanf("%d", &user_choice);

if (user_choice == 1) // line 23
{
head->next = malloc(sizeof(Product));

if (!head->next)
printf("\n Memory allocation failed! \n");

head->next->next = NULL; // 1st error

printf("\n Enter a value: \n");

int value;
scanf("%d", &value);

head->next->value = value; // 2nd error
}

free(head);
free(head->next);
}

最佳答案

typedef struct
{
} Product;

未命名 结构声明一个名为 Product 的类型别名 - 但是您需要一个已命名 结构用于前向声明 struct Product *next;,否则编译器无法判断它属于哪个定义。

最简单的解决方案是为结构命名:

typedef struct Product
{
int value;
struct Product *next;
} Product;

关于c - 不允许指向不完整类类型的指针 - 单链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55678371/

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