我一直在尝试创建一个双向链接列表,其中每个插入的值将按升序排序。我尝试编写一些代码,但代码似乎总是崩溃。
这是我得到的:
void DoublyList::insertInOrder(int insertItem)
{
Node *temp = new Node;
temp->setData(insertItem);
if (first == NULL)
first->setData(insertItem);
else
{
if (temp->getData() <= first->getData())
{
temp->setNextLink(first);
first->setPreviousLink(temp);
first = temp;
}
Node *curr = first;
while (curr->getNextLink() != NULL)
{
if (temp->getData() <= curr->getData())
{
curr->getPreviousLink()->setNextLink(temp);
temp->setPreviousLink(curr->getPreviousLink());
temp->setNextLink(curr);
curr->setPreviousLink(temp);
}
curr->setNextLink(temp);
temp->setPreviousLink(curr);
}
}
++count;
}
答案 0 :(得分:1)
在您的代码中
if (first == NULL)
first->setData(insertItem);
如果first
为NULL
,则取消引用它或调用其任何成员函数将导致程序崩溃(并生成核心转储)