Ошибка сегментации при добавлении узлов в связанный список - PullRequest
0 голосов
/ 16 января 2019

Этот метод предназначен для добавления узла по индексу, указанному со значением, переданным в Связанный список, по какой-то причине он выдает ошибку «Ошибка сегментации (сбрасывается ядро)», когда я запускаю его с использованием данных примера.Я сузил причину ссылаться на current-> next, однако понятия не имею, что делать дальше.Насколько мне известно, я не устанавливаю current в нулевое значение, и я проверил, что в связанном списке есть допустимые элементы.Даже когда я создаю условие, такое как:

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 голосов
/ 16 января 2019
Node* newNode;

Вы по умолчанию инициализировали указатель. Значение будет неопределенным. Поведение чтения неопределенного значения не определено.

newNode->value = valueInput;

Вы косвенно через неопределенный указатель. Поведение программы не определено.

...