Код: Выделить всё
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode() : val(0), next(nullptr) {}
* ListNode(int x) : val(x), next(nullptr) {}
* ListNode(int x, ListNode *next) : val(x), next(next) {}
* };
*/
class Solution {
public: ListNode * reverseList(ListNode * head) {
if (head == nullptr) return nullptr;
ListNode * current = head;
while (current -> next != nullptr) {
current = current -> next;
}
ListNode * newhead = current;
ListNode * runner = head;
while (current != head && runner != head) {
runner = head;
while (1) {
if (runner -> next == current) {
current -> next = runner;
break;
}
runner = runner -> next;
}
current = current -> next;
}
current -> next = nullptr;
return newhead;
}
};
Мой код выдает только 5, и похоже, что другие участники не связаны или что-то в этом роде, и я не понимаю, почему.
Я не знаю, почему это не работает. Узел newhead указывает на последний узел исходного списка, который является новым заголовком перевернутого списка. Я указываю указатель следующего каждого узла на предыдущий узел, но он не связывается.
Может кто-нибудь объяснить мне, почему это не работает? Я могу просто где-нибудь выучить наиболее эффективный код для решения этой проблемы, но я хочу знать, какую ошибку я сделал, что он не работает.
Подробнее здесь: https://stackoverflow.com/questions/789 ... de-problem