C++ 在C+中修改链接列表+;
我正在尝试编写一个函数,将节点添加到任意位置的链接列表中 这就是我到目前为止所做的:C++ 在C+中修改链接列表+;,c++,linked-list,nodes,C++,Linked List,Nodes,我正在尝试编写一个函数,将节点添加到任意位置的链接列表中 这就是我到目前为止所做的: ListNode* addNode( ListNode* pHead, ListNode* pNode, int pos ) { if( pHead == NULL ) { pHead = pNode; } else if( pos == 0 ) { pNode->pNextNode = pHead
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;
}
ListNode*addNode(ListNode*pHead,ListNode*pNode,int pos)
{
如果(pHead==NULL)
{
pHead=pNode;
}
否则如果(位置==0)
{
pNode->pNextNode=pHead;
pHead=pNode;
}
其他的
{
ListNode*pTempNode=pHead;
对于(int i=0;ipNextNode!=NULL)
{
pTempNode=pTempNode->pNextNode;
}
其他的
{
打破
}
}
pNode->pNextNode=pTempNode->pNextNode;
pTempNode->pNextNode=pNode;
pHead->pNextNode=pTempNode;
}
返回pHead;
}
问题是当试图添加一个不在前面的节点时,中间有几个节点被切断。我只是不知道如何在列表中搜索位置,插入新节点,然后返回整个列表 您的代码看起来不错,但这一行似乎不必要:
pHead->pNextNode = pTempNode;
另外还有一个off by one错误,您需要在1而不是0处启动for循环。这不是必需的,您应该删除此错误:
pHead->pNextNode = pTempNode;
它将在删除节点之前删除该节点
祝你好运