Hello Eugene,
Sunday, April 24, 2005, 9:09:58 AM, you wrote:
EtM> Как-то я поднимал вопрос об использовании списков на указателях.
EtM> Кто-то посоветовал использовать динамические массивы, утверждая, что
EtM> добавление у удаление элемента массива из списка можно стелать за
EtM> статическое время, а не за динамическое (линейное), как с
EtM> классическими массивами.
EtM> Вопрос: как удалить элемент в середине динамического массива (array
EtM> of TType) без цикла?
EtM> for i:= Del to MaxN-1 do Mas[i]:=Mas[i+1];
если это именно массив, то без цикла никак (в любом случае нужно
сдвигать то что после удаляемого элемента). если это двусвязный
список, то просто удалить элемент и связать предыдущий и следующий
элементы.
А вообще я считаю, что если задача требует интенсивной работы с
данными (например, текстовый редактор - вставка, удаление,
произвольный доступ), то хорошо бы разработать свою структуру данных -
например, список массивов (блоков) фиксированного размера, причем реальный
размер каждого блока должен храниться в отдельном поле блока.