我试图实现一个循环双向链表,但我不断收到一个分段错误:11错误(我相信这是因为添加和删除功能)。我不知道我的代码是否接近,但我无法通过这个错误来正确地测试它。这是我的,我相信是所涉及的代码:圆形双链表 - 分段错误:11
(Circular_DLList.cc)
void Circular_DLList::add_to_tail(int a)
{
if (is_empty()) {
tail = new DLLNode(a);
tail->next = tail;
}
else {
tail->next = new DLLNode(a, tail->next);
}
}
int Circular_DLList::delete_from_tail()
{
if(!is_empty())
{
int a = tail->info;
tail = tail->prev;
tail->next = null;
return a;
}
else
{
tail = 0;
}
return a;
}
任何帮助将是非常美妙的,谢谢。
如果发生崩溃(如分段错误),则应该在调试器中运行以捕捉“正在运行”的崩溃。这将导致调试器停在崩溃位置,并让您检查变量值和函数调用堆栈。如果调试器没有停在你的代码上,那么就直接调用堆栈直到你的代码。 –
'p->!= tail'不会编译,请发布您的真实代码。 –
请按照发布准则提取最简单的示例。它应该可以帮助你专注于这个问题。也就是说,你打破了所谓的三定律(或者C++中的五定律)。 –