在单链表按序号查找 这样写为什么答案错误呢

在带头节点的单链表L中查找第i个节点。如果存在,返回该结点的指针,否则返回空指针。

Node* locate(LinkList L, int i)
{
    LinkList p;
    p=L->next;
    int k=1;
    if(i==0) return L;
    if(i<1) return NULL;
    while(p!=NULL&&k<i){
        p=p->next;
        k++;
    }
    return p;
}

首先这个i是从0算起,还是从1算起呢?
if(i==0) return L 为什麽返回的是头节点?不可能查询头节点