c语言代码,注释写一下,

刚刚开始,学习一年
单链表的代码,C语言的,
来个哥
帮我写个注释
要详细一点的
谢谢各位帮忙
给大家磕个头
img


void ListInsert(Node** pHead, Node* pos, DataType data)
{
    assert(pHead); //断言,看头结点是否为NULL
    assert(pos);   //断言,看插入位置的结点是否为NULL
    
    Node* pNewNode = ListCreatNode(data);//根据数据创建一个结点
    if (*pHead == NULL) //如果头结点为空,则将该结点作为头结点
    {
        *pHead = pNewNode;
        return;
    }
    if (pos == NULL) //如果插入位置为空,则将该结点插入到头结点之后
    {
        ListPushBack(pHead, data);
        return;
    }

    if (pos == *pHead)  //如果插入位置跟头结点一致,则将该结点插入到头结点之后
    {
        ListPushBack(pHead, data);
        return;
    }

    Node* pCur = *pHead; //头结点指针赋值给pCur(用来遍历)
    while (pCur->_pNext != NULL)
    {
        //插入结点的动作
        if (pCur->_pNext == pos) //如果当前结点的下一节点跟要插入结点的位置一样(即找到了想要插入的位置)
        {
            pNewNode->_pNext = pos; //就把新结点的next指针指向想插入结点的位置
            pCur->_pNext = pNewNode;//把当前结点的next指针指向新插入结点
        }
        pCur = pCur->_pNext; //把当前结点的next指针赋值给当前结点,通过指针循环插入。
    }
    return;
}