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);
}