C语言 链表函数导致分段故障



此函数的目的是用于C库中的qsort函数。只有当两个集合具有相同数量的元素时,下面的函数才有效。但是,如果其中一个集合的元素少于另一个集合(并且值连续匹配),则我的函数似乎进入分割错误。我认为原因是我递归地调用了下一个节点,而下一个节点有可能是空的。

int cmp(const void *a, const void *b){
    Node *pa = (Node*)a;
    Node *pb = (Node*)b;
    if (pa->val == pb->val)
        cmp( pa->next, pb->next );
    else if (pa->val < pb->val)
        return -1;
    else
        return 1;
    return 0;  // placeholder
}

但是我可能是错的,上面的函数是正确的吗?

您根本没有检查节点是否为NULL。您必须在函数开始时检查它。

if(pa == NULL || pb == NULL)
    return 0;

相关内容

  • 没有找到相关文章

最新更新