Segfault при манипулировании связным списком - PullRequest
1 голос
/ 06 октября 2011

Я не знаю, почему я получаю этот segfault здесь.Я пытаюсь взять каждый второй узел и поместить его в новый список.Изменить: это то, что я закончил, но я все еще получаю segfault

template <class T>
List<T> List<T>::mixSplit()
{
    List<T> newList;
    newList.length=0;
    for (int count=0;count<2;count++)
        newList.head=newList.head->next;
    newList.tail=tail;
    newList.head->prev=NULL;
    newList.tail->next=NULL;
    return newList;
}

1 Ответ

1 голос
/ 06 октября 2011

На первой итерации

for (int count=0;count<1;count++)
    newList.head=newList.head->next;

... newList.head равно NULL ... поэтому использование newList.head->next - плохая идея.

Я бы рекомендовалчто вы перебираете текущий список довольно обычно (то есть current = head; while(current) ...), увеличиваете счетчик в цикле, чтобы отслеживать текущую позицию в списке, и всякий раз, когда счетчик цикла равен четному или 0 (counter % 2 == 0 или (counter & 1) == 0), используйтестандартная функция добавления списка в новый список для добавления нового узла.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...