我想创建一个链式列表,初始化它并在开头添加一个新节点。 但我有这个问题:
// // 错误:在非结构或联合的事物中请求成员'值' // //
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但我真的不明白为什么它没有找到“值”和结构上的“* 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;
答案 0 :(得分:1)
在:
t_bool list_add_elem_at_front(t_list *front_ptr, double elem)
你在论证中有太多的指针:
t_list *front_ptr
将它与:
结合使用时typedef t_node *t_list;
产生t_node**
不是删除参数中的*
,而是在任何地方使用t_node *
答案 1 :(得分: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);
}
答案 2 :(得分:0)
另外问题在于sizeof的参数应该是t_node