Обнаружить петлю обратной связи в C++

Я хотел попросить совета. Мне интересно, какой будет лучший вариант решения проблемы, у меня есть пара идей, но я не уверен, какая из них лучше или есть третья, которая превосходит предыдущие. Любой вклад очень приветствуется. Я застрял и мне нужно вдохновение, пожалуйста:)

Все объекты в цепочке содержат указатель на следующий. Мне нужно убедиться, что ни один из этих указателей не указывает на экземпляр, расположенный в более ранней позиции в цепочке.

У меня есть два подхода:

1) подсчет ссылок на каждый экземпляр: этот выглядит очень быстро, но я также думаю, что он может быть не очень надежным, поскольку, если я получу доступ к одному из экземпляров из любого другого места в программе, у меня может быть дополнительная ссылка и метод больше не будет работать.

2) повторение: если я перебираю все экземпляры в цепочке и проверяю, что ни один из них не указывает на экземпляр, который уже был проверен, т.е. в предыдущей позиции в цепочке (мне нужно создать вектор с указателями на ссылки, которые уже были проверены) . Этот кажется более надежным, но более трудоемким.

что бы вы увидели, как лучший путь?

0 ответов

Другие вопросы по тегам