2012-03-17 79 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之前刪除節點。

好運