ИМХО без рекурсии здесь никак. (Ну т.е. можно - по теории любая рекурсия раскладывается в цикл, но менее наглядно)
Опасно удалять сразу. Например: А ссылается на Б, Б ссылается на А, но кроме того С также ссылается на А
Помоему лучше вызывать УдалитьОбъекты() до тех пор, пока не вернет пустую ТЗ.
Вызвали УдалитьОбъекты(), если ТЗ не пустая и объект не помечен на цдаление - пометили на удаление, добавили объект в список и опять вызвали УдалитьОбъекты(). Еще нужно условие выхода по "не увеличению" списка - спастись от зацикливания.
Помоги, пожалуйста, реализовать. Я лично застрял.
Продвинулся только замены кода вверху строк:
СсылкиНаСсылки(ВремОбъект, 1);
На
СсылкиНаСсылки(Объект, н1);
Результат: Стал работать дольше , счетчик н1 показал в 4 раза больше обходов.
Но все равно не хочет удалять все вложенные (а также вложенных (и т.д.) ) зависимости. А также не решил проблемы ссылки друг на друга.
Хм. Хотя вроде получилось и через цикл вполне приемлимо
Хоть что-то удалось...