c - 获取C双向链表中的最后一个元素错误

标签 c list pointers linked-list

我尝试用 C 编写一个双向链表。现在我编写一个 getLast 元素函数:

Dlist* getLast(Dlist **list)
{
    if (list != NULL)
    {
        while((*list) != NULL)
            (*list) = (*list)->next;
    }
    return (*list);
}

我得到一个 segmentation fault :

Program received signal SIGSEGV, Segmentation fault. 0x080485ce in getLast (list=0x804a008) at src/dlist.c:29 29 (*list) = (*list)->next;

我添加了一个元素,回答没问题。当我尝试添加第二个元素时,出现段错误。

我这样称呼这个函数:

Dlist* addItemAtStart(Dlist** list, Pair* value)
{
    Dlist* last = NULL;
    last = getLast (*list);
    ...
}

怎么了?

最佳答案

您的代码返回 NULL 指针。

while(*list->next != NULL)

关于c - 获取C双向链表中的最后一个元素错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7082526/

相关文章:

c - 给定的 C 代码是否同时存在语法错误和语义错误?

c++ - const char& 作为函数的参数

c - 如何使用 malloc 在 ANSI - C 中声明动态整数数组并将输入整数放入其中?

c - 如何在内核模块中使用atoi

c - 报告计算进度的 C 方法是什么?

使用 Guava 将 Java Map<String, String> 映射到 List<String>

python - Python中的成对叉积

c - C中使用指针进行数组操作

c - 将结构指针初始化为 null

c++ - 将对象指针传递给函数