Как изменить предложение с помощью связанных списков?
Привет,
Поэтому я пытаюсь перевернуть предложение, не меняя буквы строки. Например, при вводе в поле: я-&ГТ;" "- и GT;л>Я-&ГТ;к-&ГТ;е-&ГТ;" "-&ГТ;п->Я-&ГТ;е-&ГТ;нуль , на выходе должен быть выход: р->Я-&ГТ;е-&ГТ;" "- и GT;л>Я-&ГТ;к-&ГТ;е-&ГТ;" "->Я-&ГТ;нуль. Мой код seg. ошибки в последней букве предложения, и я не могу понять, почему.
void List:: reverseList() { ListNode * prevNode = NULL; ListNode * currNode = head; ListNode * spaceNode = NULL; while(currNode != NULL) { cout << "CurrNode: " << currNode -> value << endl; if(currNode -> next -> value == '-' || currNode -> next == NULL) { spaceNode = currNode -> next; currNode -> next = spaceNode; if(prevNode != NULL) { spaceNode -> next = prevNode; } prevNode = spaceNode -> next; currNode = currNode -> next; } else { currNode = currNode -> next; } } }
Что я уже пробовал:
Я попытался изменить условия if-оператора, чтобы мой код мог попытаться пройти через него для последней буквы введенного предложения.
Garth J Lancaster
Ваша проблема предполагает, что первый и/или последний "узел" вашего списка неверен - поскольку вы не предоставляете код, который строит список, я/мы не можем сказать.
Я предполагаю (всегда опасно), что это какое - то задание/домашнее задание, где вы должны использовать свой собственный список-иначе вы просто использовали бы реализацию списка STL и стандартный обратный итератор с rbegin && rend, да ?
Я думаю, что вы должны использовать "улучшить вопрос" и показать код, который строит список, а также прокомментировать, почему существуют prevNode/curNode и особенно spaceNode
Я не уверен, какую среду разработки вы используете, но вы также должны быть в состоянии выделить строку, которая вызывает исключение (и она почти наверняка будет иметь нуль там, где вы не ожидаете), "одним шагом" через код - отладка-это полезный навык