Я пытаюсь написать функцию для добавления узла в связанный список в любой позиции.
Это то, что я имею до сих пор:
ListNode* addNode( ListNode* pHead, ListNode* pNode, int pos )
{
if( pHead == NULL )
{
pHead = pNode;
}
else if( pos == 0 )
{
pNode->pNextNode = pHead;
pHead = pNode;
}
else
{
ListNode* pTempNode = pHead;
for(int i = 0; i < pos; i ++)
{
if(pTempNode->pNextNode != NULL)
{
pTempNode = pTempNode->pNextNode;
}
else
{
break;
}
}
pNode->pNextNode = pTempNode->pNextNode;
pTempNode->pNextNode = pNode;
pHead->pNextNode = pTempNode;
}
return pHead;
}
Проблема в том, что при попытке добавить узел, который не находится спереди, несколько узлов вырезаются посередине. Я просто не знаю, как правильно искать позицию в списке, вставлять новый узел и затем возвращать весь список.