删除链表的第一个节点(C ++)

时间:2017-03-17 22:05:03

标签: c++ linked-list

我想知道这段代码是否正确删除了第一个节点,还是我必须将列表的头部作为指针传递?

 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 个答案:

答案 0 :(得分:5)

只有在以下情况下才有效:

  • 您的节点使用$http("api/yourAPI") .then(function (success) { ... } , function (error) { if (error.status==401) { // handle unauthorised } });
  • 分配
  • 您确保val splited_test=texts.transform(rdd => rdd.map(x=> Row.fromSeq(x.split(" ")))) splited_test.foreachRDD { rdd =>{ val fields = new Array[StructField](1) fields(0)=(DataTypes.createStructField("text", StringType, true)) val schema = DataTypes.createStructType(fields) val df= sqlContext.createDataFrame(rdd, schema) }} 始终指向有效节点(列表不为空)。

否则,您将导致未定义的行为。

但你真的不应该将new存储为成员变量,而应该是一个局部变量。

head变量也是如此,确保它确实需要成为成员。

此外,如果你删除一个对象(例如你的节点),所有剩余的指针都将变为无效,所以要小心你以后不要尝试访问它,例如。通过temp指针。

答案 1 :(得分:-2)

Yup将删除head的原始值所指向的数据。