Отправляет email-рассылки с помощью сервиса Sendsay

Программирование. Форум !!!

Динамические массивы

Привет comp,

Как-то я поднимал вопрос об использовании списков на указателях.
Кто-то посоветовал использовать динамические массивы, утверждая, что
добавление у удаление элемента массива из списка можно стелать за
статическое время, а не за динамическое (линейное), как с
классическими массивами.

Вопрос: как удалить элемент в середине динамического массива (array
of TType) без цикла?

for i:= Del to MaxN-1 do Mas[i]:=Mas[i+1];

Афоризм напоследок: У свободы есть крупный недостаток: все свои проблемы придется
решать самостоятельно.
Winamp глаголит: Кино - Мои друзья
24 апреля 2005 г. 9:04:52

Просто студент
Eugene mailto:rav***@o*****.ru

Номер выпуска : 4402
Возраст листа : 583 (дней)
Количество подписчиков : 512
Адрес в архиве : http://subscribe.ru/archive/comp.soft.prog.prog/msg/357596
Получить правила : mailto:comp.soft.prog.prog-rules@subscribe.ru
Формат "дайджест" : mailto:comp.soft.prog.prog-digest@subscribe.ru
Формат "каждое письмо" : mailto:comp.soft.prog.prog-normal@subscribe.ru
Формат "читать с веба" : mailto:comp.soft.prog.prog-webonly@subscribe.ru

Ответить   Sun, 24 Apr 2005 09:09:58 +0400 (#357596)

 

Ответы:

Hello Eugene,

Sunday, April 24, 2005, 9:09:58 AM, you wrote:

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

Ответить   Wed, 27 Apr 2005 19:46:31 +0400 (#358747)