嗨,我试图在双向链表中找到一个特定的整数/字符串,所以我有一个函数来查找它。但是,我仍然在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;
}
答案 0 :(得分:0)
此:
Node *dat;
dat->value = it->newElm(int (*fp) (void *vp));
是未定义的行为,dat
未初始化。
也许应该是:
dat = it->newElm(fp);
即使我不理解在新元素调用中使用find-function。