[英]Appending Node 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 = 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
为NULL。 当达到此目标时,可以通过执行temp->next
取消引用它。 那是UB,这是程序崩溃的原因。
如下更改while循环,以便在您到达最后一个元素(即,下一个元素为NULL)时停止:
while(temp->next != NULL){
temp = temp->next
}
请注意,由于有if子句,因此在循环开始时temp
没有为NULL的风险。
无关的评论:建议您在编写C ++代码时养成使用nullptr而不是NULL的习惯
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.