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;
}