Files
eduplan-cpp-eltex/diag/tasks/02_list/task.md
T

1.1 KiB

Задача 02 — связный список (C++)

Даны функции над односвязным списком Node{int value; Node* next;}:

Node* reverse_list(Node* head);   // развернуть список на месте, вернуть новую голову
Node* find_middle(Node* head);    // середина; для чётной длины — второй из двух средних
bool  has_cycle(Node* head);      // есть ли цикл

Требования:

  • никаких аллокаций, O(1) дополнительной памяти, один проход там, где это возможно;
  • find_middle и has_cycle — через два указателя (медленный/быстрый);
  • корректная работа с пустым списком и списком из одного узла.

Проверка: python3 grade.py 02. Критерий: все ok, ASAN/UBSAN чистые (утечки в тесте считаются ошибкой — тест сам освобождает память).