При использовании односвязного списка мне предлагали использовать «if x != nullptr», но я не понимаю, почему это работает. В моем примере кода первый и второй операторы печати работают, но как только я добавляю третий, возникает ошибка nullptr. И это несмотря на то, что узел уже проверен на строке перед ним и успешно запущен.
Код: Выделить всё
ListNode* addTwoNumbers(ListNode* l1) { // l1 has 3 nodes containing a single digit
std::cout val;
l1 = l1->next;
if (l1 != nullptr) {
std::cout val;
}
std::cout val;
return 0;
}
Если вы закомментируете третий оператор печати, он распечатает первые два узла, но если вы добавите третий, возникнет ошибка. Я уже проверил if (l1 != nullptr) и успешно выполнил второй оператор печати, поэтому можно с уверенностью предположить, что l1->val также допустим, но это не так.
Подробнее здесь:
https://stackoverflow.com/questions/786 ... checked-it