无法在链接列表中添加节点

时间:2014-01-09 18:11:04

标签: 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;
      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;

3 个答案:

答案 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