4. Итераторы

Реализуйте односвязный список любым простым способом.

Реализуйте возможность создавать списки с циклами, например:

digraph G { bgcolor = "#ffffff00"; rankdir=LR; node[ shape=circle width=0.6 fontsize=11 fontname=Arial fixedsize=true style=filled fillcolor="#ffffff" ]; edge [fontname=Arial fontsize=11] 1 -> 2 -> 3 -> 4 -> 2 }

Реализуйте итератор и функцию проверки наличия цикла в списке.

Техника проверки:

  1. Создать два итератора: один перемещается по списку с шагом 1 (черепаха), другой с шагом 2 (заяц).

  2. Одновременно обойти список двумя итераторами.

  3. Если оба итератора дошли до конца списка, то цикла нет.

  4. Если в процессе обхода итераторы оказались на одном элементе, то цикл есть.