C++实现链表尾部插入节点时程序持续崩溃如何解决
问题原因
崩溃的根因是空指针解引用:
现有遍历逻辑的循环终止条件为traverser != nullptr,循环执行结束后traverser的值已经是nullptr,此时执行traverser->next = newNode属于对空指针做成员访问,直接触发程序崩溃。
修复方案
将遍历的循环终止条件修改为traverser->next != nullptr即可,修改后循环结束时traverser会指向链表的最后一个有效节点,此时给next赋值新节点可正常完成尾插操作。
修改后的insert函数参考代码:
void SymbolTable::insert(string id) { Node *traverser = &(this->head); // 遍历到最后一个节点停下 while (traverser->next != nullptr) { traverser = traverser->next; } Node *newNode = new Node(); newNode->id = id; newNode->next = nullptr; traverser->next = newNode; }
内容的提问来源于stack exchange,提问作者Tan Nguyen
相关产品推荐
相关产品推荐

