附加节点双链表

时间:2016-03-26 01:13:12

标签: c++ insert append doubly-linked-list

我正在尝试将节点添加到新列表中。程序在while循环中崩溃。

content.js

我也尝试过使用它而不是while循环,但结果相同:

void DLL:append(string ss, string name, int & count){
  Node *temp;
  Node *newNode = new Node();
  newNode->ssn = ss;
  newNode->name = name;
  newNode->next = NULL;
  newNode->prev = NULL;
  temp = headPtr;

  if(headPtr == NULL){
   headPtr = newNode;
   count++;
  }else{
   while(temp->next != NULL){
    temp = temp->next;
   }
   newNode->prev = temp;
   newNode->next = NULL;
   temp->next = newNode;
   count++;
  }
 }
}

非常感谢任何帮助!

编辑:将上面的第二个案例更改为

while(temp != NULL){
 ...
 temp = temp->next
}

它通过整个事物,然后显示其他语言的字符,以及符号等 - 然后关于我的表面上的每个文件夹,直到它最终崩溃:c

1 个答案:

答案 0 :(得分:0)

您当前循环直到temp为NULL。当它达到此calue时,您可以通过temp->next取消引用它。那个UB就是你的程序崩溃的原因。

按照以下方式更改循环,以便在最后一个元素(即下一个元素为NULL)时停止:

while(temp->next != NULL){
    temp = temp->next
}

请注意,由于你的if子句,在循环开始时temp没有冒险的风险。

无关评论:我建议您在编写C ++代码时习惯使用nullptr而不是NULL