Я пытаюсь перевернуть связанный список и обнаружил проблему с его запуском. код просто выдает ошибку при ее отображении. при отображении он входит в бесконечный цикл. Сделаю ли я правильный шаг?
void Header::reverse()
{
Node* nodePtr = head;
Node* first = head;
Node* temp = NULL;
while(nodePtr)
{
temp = nodePtr;
nodePtr = nodePtr->next;
temp->next = first;
first = temp;
}
head = first;
}
И вот часть моего кода класса ....
enter code here
class Header
{
private:
struct Node
{
Node* next;
int value;
};
Node* head;
.....
Может ли кто-нибудь сказать мне, что я здесь делаю не так?
1 ответ
First должно быть NULL при запуске, иначе на первой итерации вы, по сути, делаете
head->next = head;
Похожие вопросы
Связанные вопросы
Новые вопросы
c++
C ++ - это язык программирования общего назначения. Первоначально он был разработан как расширение C и имеет аналогичный синтаксис, но теперь это совершенно другой язык. Используйте этот тег для вопросов о коде (который должен быть) скомпилирован с помощью компилятора C ++. Используйте тег для конкретной версии для вопросов, связанных с конкретной версией стандарта [C ++ 11], [C ++ 14], [C ++ 17], [C ++ 20] или [C ++ 23] и т. Д. .