刚刚开始,学习一年
单链表的代码,C语言的,
来个哥
帮我写个注释
要详细一点的
谢谢各位帮忙
给大家磕个头
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;
}