2017-03-17 63 views
-3

我想知道這個代碼是否正確刪除第一個節點,或者我應該一定通過列表的頭指針?刪除鏈表(C++)的第一個節點

void List::deleteFirst()   
{ 
temp = head; 
head = head->next; 
delete temp; 
} 

這是類List

class List 
    { 
    private: 
      struct node 
      { 
       int data; 
       node * next; 
      }; 
      node * head; 
      node * curr; 
      node * temp; 
    public: 
      //List(); 
      //void AddNode(int addData); 
      //void DeleteNode(int delData); 
      void deleteFirst(); 
      //void PrintList(); 
}; 

回答

-2

燁將刪除該數據由頭部的原始價值指向。

5

這將工作,位只有:

  • 你的節點使用new
  • 您確保head總是指向一個有效的節點(列表不爲空)分配。

否則,將導致未定義的行爲。

但你真的不應該存儲temp作爲成員變量,它應該是一個局部變量來代替。

這同樣適用於在curr變量,確保它真正需要的一員。

此外,如果你刪除一個對象(如您的節點),所有剩餘的指針,它變得無效,所以一定要小心,你不嘗試就可以訪問它,爲前。通過curr*指針。