Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 追加节点双链表_C++_Insert_Append_Doubly Linked List - Fatal编程技术网

C++ 追加节点双链表

C++ 追加节点双链表,c++,insert,append,doubly-linked-list,C++,Insert,Append,Doubly Linked List,我正在尝试将节点附加到新列表中。程序在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 = head

我正在尝试将节点附加到新列表中。程序在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循环,但结果相同:

while(temp != NULL){
 ...
 temp = temp->next
}
任何帮助都将不胜感激

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

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

它完成了整个过程,然后显示了其他语言的字符,以及符号等,然后是我的界面上的每个文件夹,直到它最终崩溃:c

您当前循环直到
temp
为空。当它到达此计算时,您可以通过执行
temp->next
来解除对它的引用。这就是UB,这就是导致程序崩溃的原因

将while循环更改如下,以便在最后一个元素(即下一个元素为NULL)时停止:

请注意,由于您的if子句,
temp
在循环开始时不存在为NULL的风险


<>无关的注释:我建议你在编写C++代码

时使用Null pTR而不是NULL的习惯。我不是C++的专家,但是你在while语句中的行中缺少分号(“TEMP= TEMP-> Next”)。我是,谢谢!我重新键入了它,我的真实代码中有分号谢谢一堆,我会尝试一下!我有nullptr,但我的编译器给了我一个错误…我刚刚检查了我的代码,我实际上有你说的,它似乎不起作用…追加仍然崩溃吗?Node::name定义为std::string吗?请注意,你还计算了++一太多:如果您使用将达到的元素数在循环中显示所有内容,并显示空指针。请在问题中输入所有相关代码,因为我们无法猜测可能出错的所有内容。我尝试过的每个方法(上面列出的,包括您的)都确实会崩溃。
while(temp->next != NULL){
    temp = temp->next
}