在C中创建链接列表

时间:2015-02-16 20:48:20

标签: c linked-list

我目前正在尝试创建链接列表并在函数中初始化它。它看起来像这样:

void add_forest(node_t *head, unsigned char value)
{
    int key;
    node_t *current = head;
    while (current->next != NULL)
    {
        current = current->next;
    }

}

int main()
{
    node_t *head;
    *head = init_forest(); //error here
}

我目前在我的代码中的以下区域遇到段错误,无法找出原因。我在init_forest()创建头部,然后在主要部分中传回。当我通过init_forest()时,树就会建成。有什么建议吗?

1 个答案:

答案 0 :(得分:3)

当前问题出在main()

node_t *head;
*head = init_forest();

head是一个未初始化的指针;你不能取消引用它,而你实际上并不想要。你应该使用:

node_t *head = init_forest();

但是,您需要确保init_forest()返回node_t *,而不是node_t值。对于这种链表管理功能,这是更正统的风格。你在函数中分配了结构;如果你返回结构的副本而不是指向结构的指针,你就会泄漏内存(最后你会遇到其他问题)。