我正在尝试将节点添加到新列表中。程序在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
答案 0 :(得分:0)
您当前循环直到temp
为NULL。当它达到此calue时,您可以通过temp->next
取消引用它。那个UB就是你的程序崩溃的原因。
按照以下方式更改循环,以便在最后一个元素(即下一个元素为NULL)时停止:
while(temp->next != NULL){
temp = temp->next
}
请注意,由于你的if子句,在循环开始时temp
没有冒险的风险。
无关评论:我建议您在编写C ++代码时习惯使用nullptr而不是NULL