Я реверсирую двойной список. Моя функция для этого же:Возврат внутрь цикла для цикла C++ breaks?
Node* Reverse(Node* head)
{
// Complete this function
// Do not write the main method.
Node* temp = new Node();
if (head == NULL) { return head; }
while (head != NULL) {
temp = head->next;
head->next = head->prev;
head->prev = temp;
if (temp == NULL) { break; }
head = temp;
}
return head;
}
Это работает правильно. Вместо того, чтобы использовать команду останова, если я «возвратный голову», чем функция выходит из цикла пока так и ошибку компиляции: управление достигает конца Непустой функции [-Werror = возвратного типа]
Node* Reverse(Node* head)
{
// Complete this function
// Do not write the main method.
Node* temp = new Node();
if (head == NULL) { return head; }
while (head != NULL) {
temp = head->next;
head->next = head->prev;
head->prev = temp;
if (temp == NULL) { return head; }
head = temp;
}
}
Что может быть причиной этого?
Можете ли вы опубликовать сообщение об ошибке компилятора? – ul90
Я думаю, это потому, что все пути кода должны возвращать узел *. Это может никогда не произойти во время выполнения, но по-прежнему существует путь после цикла while. –
ошибка: управление достигает конца не-void функции [-Werror = return-type] –