C 无法在链接列表中添加节点
我想创建一个链表,初始化它,并在开头添加一个新节点。 但我有一个问题: //// 错误:请求非结构或联合中的成员“值” ////C 无法在链接列表中添加节点,c,list,pointers,C,List,Pointers,我想创建一个链表,初始化它,并在开头添加一个新节点。 但我有一个问题: //// 错误:请求非结构或联合中的成员“值” //// t_bool list_add_elem_at_front(t_list *front_ptr, double elem) { if (front_ptr == NULL) { front_ptr = malloc(sizeof(*front_ptr)); front_ptr->value = elem; fro
t_bool list_add_elem_at_front(t_list *front_ptr, double elem)
{
if (front_ptr == NULL)
{
front_ptr = malloc(sizeof(*front_ptr));
front_ptr->value = elem;
front_ptr->next = NULL;
}
printf("%f\n", front_ptr->value);
return (TRUE);
}
我确信这个结构是malloc,但我真的不明白为什么它在结构上找不到“value”和“*next”
int main(void)
{
int i = 2.1;
t_list list_head = NULL;
list_add_elem_at_front(&list_head, i);
}
和头文件
typedef struct s_node
{
double value;
struct s_node *next;
} t_node;
typedef t_node *t_list;
在:
参数中的指针太多:
t_list *front_ptr
当您将其与以下内容结合使用时:
typedef t_node *t_list;
导致一个t\u节点**
与其删除参数中的
*
,我只想在所有地方使用t_node*
,另外,问题在于应该是t_node的sizeof参数
t_bool list_add_elem_at_front(t_list *front_ptr, double elem)
{
if (*front_ptr == NULL)
{
*front_ptr = malloc(sizeof(**front_ptr));
(*front_ptr)->value = elem;
(*front_ptr)->next = NULL;
}
printf("%f\n", (*front_ptr)->value);
return (TRUE);
}
我知道,但我想在这件事上做这件事way@Laykker-我知道你想使用
typedef
——在t\u列表*
上进行解引用可以工作,但是如果你不以这种方式使用指针typedef
,你的代码会更清晰(可能还有错误消息),你确定吗?@(Glen Teitelbaum)是的,但这并不是唯一的问题,只是注意到这个问题不会导致:///错误:在非结构或联合中请求成员“value”(Glen Teitelbaum)你是对的,但在C中,问题绝不是单独出现的:-)可能更清楚地说明,“此外,问题在参数中…”然后显示正确的代码。顺便说一句,我能拿回我的“n”吗?伙计,它真的在工作。请给我解释一下好吗?对于这个解决方案,你需要做malloc(sizeof(**front\u ptr))
。@Laykker就你的代码而言,front\u ptr
是指向列表头的指针。需要取消对实际值的引用,并且int i=2.1代码>-->双i=2.1代码>真的很有帮助,非常爱你们!
t_bool list_add_elem_at_front(t_list *front_ptr, double elem)
{
if (*front_ptr == NULL)
{
*front_ptr = malloc(sizeof(**front_ptr));
(*front_ptr)->value = elem;
(*front_ptr)->next = NULL;
}
printf("%f\n", (*front_ptr)->value);
return (TRUE);
}