C ++中出现“这是nullptr”错误。链表问题

时间:2019-06-07 22:31:30

标签: c++ linked-list nullptr

我正在尝试了解链接列表,并获得了很多建议。 现在,我正在使用的程序正在对链接列表中的名称进行排序。 基本上,用户将输入一个名称,该名称将在列表中的其他两个项目之间发送(如果列表不为空)。 我有一个名为“节点”的结构,其中包含指向下一个节点的指针和一条数据(字符串)。 这就是我的位置。如果头指针为nullptr,我的程序将成功添加一个名称。然后将newNode-> next设置为nullptr,以便可以将我定义为列表的末尾。

这是代码:

// create a new node
Node* newNode = new Node;
Node* trail = nullptr;
Node* current = head;

// initialize the value of the new node
newNode->data = name;
// Make new node point to the previous first node
//base case 1
if (head == nullptr) {
    head = newNode;
    newNode->next = nullptr;
    return true;
}

问题出在代码的下一部分:

if (head != nullptr) {
    current = head;
    trail = current;
    current = current->next;
    while (name.at(1) > current->data.at(1)) {
        trail = current;
        current = current->next;

    }
    if (current->next = nullptr) {
        trail->next = newNode;
        newNode->next = nullptr;
    }
    if (current->next != nullptr) {
        newNode->next = current;
        trail->next = newNode;
    }

}

引发异常。错误消息说“这是nullptr”。 我的问题是,这是什么意思?如何发生此错误,并且最好的解决方法是什么? 很抱歉,这个问题是重复性的,但其他类似问题与链接列表无关。 谢谢!

1 个答案:

答案 0 :(得分:1)

在这段代码中,您是否检查current是否不是nullptr

    while (name.at(1) > current->data.at(1)) {
        trail = current;
        current = current->next;

    }

下一步,请注意,您在这里有一个作业,而不是进行比较:

    if (current->next = nullptr) {
        trail->next = newNode;
        newNode->next = nullptr;
    }

if语句将始终为false,下一条语句(if (current->next != nullptr))也将始终为false。

相关问题