Здравствуйте, Nuzhny, Вы писали:
Тё>>Второе сравнение с —-last- это bad practice. Некрасивый трудночитаемый код.
N>Не для библиотечного кода, который характеризуется оптимальностью, а не читабельностью. Там даже комментарии не обязательны. А функция явно библиотечная, код красивый.
Комментарии там излишни, а 2 сравнения ==last и ==-last внутри одного условия уменьшают читабельность.
Тё>>Напишите теперь переворот односвязного списка.
N>Напиши сперва реализацию односвязного списка, а я уже переверну.
class Node {
public:
char *value;
Node *next;
}
Node* reverse(Node *head) {
...
}
Тё>>И без стандартных функций пожалуйста, всё ручками.
N>Типа std::swap нельзя использовать? Вот это будет уже по-настоящему некрасивый код. Ты точно понимаешь задачу "реализовать такую-то функцию"? Это означает именно что реализовать функцию, её логику, а не весь стек абстракций, которые лежат внутри.
Там не нужен итератор, это твоя профессиональная деформация от C++ сказывается. Целочисленного индекса по массиву более, чем достаточно.