为什么这里会提示return incompatible type

NODE deletenode(NODE *head,int num)
{
NODE *p,*q;
if(head==NULL)
return head;

q=NULL;
p=head;
while(p)
{
    if(p->data==num)
    {
        if(q==NULL)
        {
            head=head->link;
            free(p);
            p=head;
        }
        else
        {
            q->link=p->link;
            free(p);
            p=q->link;
        }
    }
    else
    {
        q=p;
        p=p->link;
    }

}
return head;

}

NODE deletenode(NODE head,int num)
函数原型是返回NODE型
但是你返回的是NODE
型(return head;),即NODE型指针.所以不匹配.