链栈中关于栈顶结点的问题

我不理解为什么s->next是栈顶,而不是s

/*
 *    出栈 弹栈
 *    s 链栈
*/
ElemType Pop(LinkStack s){
    LinkStack top;
    ElemType data;
    // 判栈空
    if(StackEmpty(s)){
        return FALSE;
    }
    top = s -> next;    // 访问栈顶结点
    data = top -> data;    // 取出栈顶元素
    s -> next = top -> next;
    free(top);            // 释放栈顶空间
    return data;
}


s 是头结点。

人为规定而已,但是这样做确实是有好处的,如果直接用s也是可以,但是代码写起来比较拗口。