无法编译查找功能:收到错误消息

时间:2018-04-23 10:49:41

标签: c doubly-linked-list

嗨,我试图在双向链表中找到一个特定的整数/字符串,所以我有一个函数来查找它。但是,我仍然在int'之前得到一个预期的表达式。编译错误消息.cmpElm将比较整数/字符串,如果它的真值返回1.此函数中调用的add函数只是添加指向list.Here是find函数:

Iterate find(Iterate it, int (*fp) (void *vp) )
{
    Iterate finret = newIterate(it->cmpElm,it->newElm,it->freeElm);

    Node *fi;

    Node *dat;

    dat->value = it->newElm(int (*fp) (void *vp));

    for (fi=it->curr; it->curr!= NULL; it->curr=it->curr->next)
    {
        if(it->cmpElm(fi,dat) == 1)
        {
            add(finret,fi);
        }

        return finret;
    }  

    // Find elements of vp in list after current position 
    // and put in new list. Return the list.
    return NULL;
}

1 个答案:

答案 0 :(得分:0)

此:

Node *dat;
dat->value = it->newElm(int (*fp) (void *vp));

是未定义的行为,dat未初始化。

也许应该是:

dat = it->newElm(fp);

即使我不理解在新元素调用中使用find-function。