2017-03-17 97 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*指针。