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;
它将在删除节点之前删除该节点

祝你好运