Here is a recursive version.
int firstPositive(const Cell* L)
{
if(L == NULL) return 0;
else if(L->item > 0) return L->item;
else return firstPositive(L->next);
}
Here is a looping version.
int firstPositive(const Cell* L)
{
const Cell* p = L;
while(p != NULL)
{
if(p->item > 0) return p->item;
p = p->next;
}
return 0;
}
Here is a looping version using a for-loop.
int firstPositive(const Cell* L)
{
for(const Cell* p = L; p != NULL; p = p->next)
{
if(p->item > 0) return p->item;
}
return 0;
}