在链表中插入结构的混乱处理(C)

在链表中插入结构的混乱处理(C),c,struct,linked-list,nodes,C,Struct,Linked List,Nodes,我有一个任务,其中一些功能交给了我,另一些则由我自己实现。我自己做的一个函数是,向struct对象添加单个参数,然后调用insert函数(提供的)将该对象放入链表中。 但是,insert函数丢失的一个参数 这是 struct node{ Task *task; struct node *next; }; 这是我的add函数的开始,在这里我创建了这个对象,并打算将它插入到链表中 void add(char *name, int priority, int burst){

我有一个任务,其中一些功能交给了我,另一些则由我自己实现。我自己做的一个函数是,向struct对象添加单个参数,然后调用insert函数(提供的)将该对象放入链表中。 但是,insert函数丢失的一个参数

这是

struct node{
    Task *task;
    struct node *next;
};
这是我的add函数的开始,在这里我创建了这个对象,并打算将它插入到链表中

void add(char *name, int priority, int burst){

    Task task1 = (Task){.name = name, .priority = priority, .burst = burst};
    //insert() here
}
然而,insert的参数让我感到困惑

void insert(struct node **head, Task *task);
我知道task1将是第二个参数,但我不知道如何处理第一个参数。如何在add函数中调用insert


谢谢大家!

您需要将列表头变量保存在某个地方,初始化为
NULL
,例如:

struct node *list_head = NULL;
然后将地址传递给您的函数:

insert(&list_head, task);

传递地址的原因是,
insert
可以修改地址以指向新的列表头。

您需要在某个地方保留一个列表头变量,初始化为
NULL
,例如:

struct node *list_head = NULL;
然后将地址传递给您的函数:

insert(&list_head, task);

传递地址的原因是,
insert
可以将其修改为指向新的列表头。

Ahhh。双重**让我困惑。非常感谢你。顺便说一句,我从一篇旧的堆栈溢出文章中借用了向struct对象添加参数的方法。它有什么问题吗?您是说初始化
task1
?这是在某些时候添加到C的扩展之一,以允许命名结构字段初始化。在此之前,您只能指定字段值序列(没有名称)。我应该说得更具体些。我找不到很多这样的例子。这是C99中添加的功能之一。我发现这可能会有帮助。我很高兴他们添加了这个功能。再次感谢你所做的一切。双重**让我困惑。非常感谢你。顺便说一句,我从一篇旧的堆栈溢出文章中借用了向struct对象添加参数的方法。它有什么问题吗?您是说初始化
task1
?这是在某些时候添加到C的扩展之一,以允许命名结构字段初始化。在此之前,您只能指定字段值序列(没有名称)。我应该说得更具体些。我找不到很多这样的例子。这是C99中添加的功能之一。我发现这可能会有帮助。我很高兴他们添加了这个功能。再次感谢你所做的一切。