将节点添加到链接列表时出现分段错误

时间:2019-01-15 23:24:30

标签: c++ linked-list segmentation-fault

此方法旨在在指定的索引处添加一个节点,该索引具有传递到链接列表的值,由于某种原因,当我使用示例数据运行它时,它给我一个“分段错误(核心转储)”错误。我已经缩小了引用current-> next的原因,但是我不知道从这里开始该怎么做。就我所知,我没有将current设置为null值,并且我检查了Linked List是否包含有效项。即使当我创建条件时,例如:

if(current->next) current = current->next

编译器仍然给我一个分段错误。

代码如下:

Node* add(Node* head, int index, int valueInput)
{

    Node* newNode;
    newNode->value = valueInput;


    if(index == 0){

        newNode->next = head;
        return newNode;

    }

    int i = 0;
    Node* current = head;

    while(i <= index && current != NULL){

         if(i == (index-1)){

             Node* temp = current->next;
             current->next = newNode;
             newNode->next = temp;

             return head;

         }

        i++;

        current = current->next;


    }

    return NULL;

}

class Node {
    public:
        int value;
        Node* next = NULL;
};

1 个答案:

答案 0 :(得分:4)

Node* newNode;

您已经默认初始化了一个指针。该值是不确定的。读取不确定值的行为是不确定的。

newNode->value = valueInput;

您通过不确定的指针间接进行操作。该程序的行为是不确定的。