2012-03-17 78 views
0

我想写一个函数来将节点添加到链接列表的任何位置。在C++中修改链接列表

这是我到目前为止有:

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; 
} 

的问题是,尝试添加,是不是在前面的几个节点在中间切出一个节点时。我只是不知道如何正确搜索位置列表,插入新节点,然后返回整个列表。

回答

1

你的代码看起来,除了这行权似乎没有必要:

pHead->pNextNode = pTempNode; 

也有一个差一错误,你需要开始您在代替1 0

+0

非常感谢! – Wrew 2012-03-18 04:38:30

0

这是没有必要的,你应该删除这个:

pHead->pNextNode = pTempNode; 

它将pTempNode之前删除节点。

好运