Node* revHead;
// ...
while(current != NULL)
{
//check if it's the first one being added
if(revHead == NULL)
Вы не инициализируете revHead
, но используете его.
(Надеюсь, вам уже ясно, что revHead
- это локальная переменная, используемая для хранения адреса памяти, а не то, что существует вне метода / процедуры)
Класс хранения revHead
является автоматическим (он же в локальной области видимости). В C++
, когда вы делаете такое объявление, нет гарантии, что значение будет 0
.
(кроме случаев, когда класс хранения имеет тип static
или переменная global
, где она автоматически инициализируется равной 0
, если не указано другое значение. В вашем случае переменная имеет класс хранения типа auto
это означает, что оно определено локально в функции, и при объявлении локальной переменной без указания значения значение является мусором. Имейте в виду, что в следующем стандарте C ++ C++0x
ключевое слово auto
приобретает новое значение).
Значение в вашем случае - мусор, из-за которого if
терпит неудачу. Подробнее см. Здесь: Ссылка
Do
Node* revHead = NULL;
Имейте в виду, что, возможно, у вас могут быть подобные ошибки и в другой части вашего кода.