双重链接列表按顺序插入

时间:2015-03-04 02:39:21

标签: c++ linked-list

我一直在尝试创建一个双向链接列表,其中每个插入的值将按升序排序。我尝试编写一些代码,但代码似乎总是崩溃。

这是我得到的:

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;
}

1 个答案:

答案 0 :(得分:1)

在您的代码中

if (first == NULL)
        first->setData(insertItem);

如果firstNULL,则取消引用它或调用其任何成员函数将导致程序崩溃(并生成核心转储)