Я хочу иметь итератор над структурой данных. Пока я не знаю, что такое структура данных, может быть, это DAG (ориентированный ациклический граф), а может быть, это может быть и связанный список. Поэтому я хочу обернуть его в итератор и не думать сейчас о конкретной структуре данных.
Я знаю, как посетить DAG с рекурсивным посетителем, но я не могу придумать простую и понятную структуру для реализации методов итератора next()
и hasNext()
.
Внутри итератора я создал текущий экземпляр узла и выполняю итерацию с циклом for по всем дочерним элементам, а затем возвращаюсь к родителю. Необходим флаг «уже посещенный». Итак, мой DagElement
имеет еще эти атрибуты:
DagElement parent
boolean alreadyVisited
Я не думаю, что это чистое решение.
Любой совет?
alreadyVisited
не должен быть членом структуры данных, вместо этого сохраняйтеSet
ссылок на посещенные узлы в итераторе. - person Christoffer Hammarström   schedule 15.11.2010