在 C 中创建链表

标签 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() 中创建头部,然后在 main 中返回。当我通过 init_forest() 时,树确实被构建了。有什么建议吗?

最佳答案

紧迫的问题在 main() 中:

node_t *head;
*head = init_forest();

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

node_t *head = init_forest();

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

关于在 C 中创建链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28550065/

相关文章:

c - 在C中读入并记录一个数字

c - 函数参数中的整数双指针

仅针对添加(插入)操作优化的 Java 集合

c - 结构中的 (file_t)(-1),0 是什么意思?

c - 用C语言获取Linux上的程序进程(服务和守护进程)

c - 在 C : OSdev 中绘制像素

c++ - 使用循环链表遍历队列

java - 理解链表实现的问题

c - 使用链表的现有实现来实现队列: Bad File Number error

java - 打印出链表