Я пытаюсь перевернуть связанный список и обнаружил проблему с его запуском. код просто выдает ошибку при ее отображении. при отображении он входит в бесконечный цикл. Сделаю ли я правильный шаг?

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;

.....

Может ли кто-нибудь сказать мне, что я здесь делаю не так?

0
Jack Smother 22 Мар 2013 в 17:55
Какая-то конкретная проблема?
 – 
noelicus
22 Мар 2013 в 17:56
Может быть, мы сможем, если вы скажете, какая у вас точная ошибка
 – 
Bartek Banachewicz
22 Мар 2013 в 17:56
Код просто выдает ошибку при ее отображении. при отображении он входит в бесконечный цикл.
 – 
Jack Smother
22 Мар 2013 в 17:57
@LeonardLie: что именно вы имеете в виду под "отображением"?
 – 
PlasmaHH
22 Мар 2013 в 17:59
После добавления 5 чисел в список он отображается правильно (например, 5 4 3 2 1 от головы до хвоста), но после его переворота при отображении отображается бесконечный цикл (5 5 5 5 5 5 5 5 5 5 5 5)
 – 
Jack Smother
22 Мар 2013 в 18:00

1 ответ

Лучший ответ

First должно быть NULL при запуске, иначе на первой итерации вы, по сути, делаете

head->next = head;
1
Loghorn 22 Мар 2013 в 18:01
Браво, большое спасибо. это сделало это. это было быстро. Я ценю вашу помощь, сэр Логхорн!
 – 
Jack Smother
22 Мар 2013 в 18:02