Добавлено: 05 Апрель 2004, 17:14
Здравствуйте, господа!
Наткнулся на очень странную ситуацию.
У меня одна задача свелась к раскрашиванию графов. Есть точки, часть раскрашена в чёрный цвет. Точки, связанные с ними, также перекрашиваются. Надо выяснить, какие точки в конце концов останутся белыми.
Создал два сортированных списка (очереди) номеров точек - необработанные и обработанные. Поместил всё черные в список необработаных.
А дальше
Цикл
Беру точку - последнюю запись в списке необработанных
Удаляю из списка необработанных
Помещаю в список обработанных
В список необработанных помещаю связанные точки, которых нет в обоих списках.
Конец цикла
И вот тут наткнулся на проблему - в какой-то момент зацикливается операция Get по очереди (отслежено отладчиком) . Получается, что удаление записей из сортированной очереди может привести к нарушению сортировки... Если я беру не последнюю, а первую запись - всё нормально. Мистика!
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Написал: ClaList(2)
Наткнулся на очень странную ситуацию.
У меня одна задача свелась к раскрашиванию графов. Есть точки, часть раскрашена в чёрный цвет. Точки, связанные с ними, также перекрашиваются. Надо выяснить, какие точки в конце концов останутся белыми.
Создал два сортированных списка (очереди) номеров точек - необработанные и обработанные. Поместил всё черные в список необработаных.
А дальше
Цикл
Беру точку - последнюю запись в списке необработанных
Удаляю из списка необработанных
Помещаю в список обработанных
В список необработанных помещаю связанные точки, которых нет в обоих списках.
Конец цикла
И вот тут наткнулся на проблему - в какой-то момент зацикливается операция Get по очереди (отслежено отладчиком) . Получается, что удаление записей из сортированной очереди может привести к нарушению сортировки... Если я беру не последнюю, а первую запись - всё нормально. Мистика!
---------------------------------------
C уважением,
Юрий Философов,
Главный программист
Корпорация "Диполь", Саратов
E-mail yufil@tacis-dipol.ru (служ)
yufil@mail.ru (дом)
ICQ#75924439
Написал: ClaList(2)