我正在尝试编写一个函数来将节点添加到任何位置的链表中。
这是我到目前为止所做的:
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;
}
问题在于,当尝试添加不在前面的节点时,中间会切出一些节点。我只是不知道在列表中搜索位置,插入新节点,然后返回整个列表的正确方法。
答案 0 :(得分:1)
你的代码看起来正确,除了这一行似乎没必要:
pHead->pNextNode = pTempNode;
还有一个一个一个错误,你需要以1而不是0开始你的for循环。
答案 1 :(得分:0)
这不是必需的,你应该删除它:
pHead->pNextNode = pTempNode;
它将删除pTempNode之前的节点。
祝你好运