994_______________________________________________Глава 15

Прототипы
Для TList:

void _fastcail Exchange(int Indexl, int Index2);

для TStrings и TStringList:

virtual void   fastcail Exchange(int Indexl, int Index2);

Описание

При вызове Exchange два элемента списка с позициями Indexl и Index2 обме-
ниваются местами. Индексы позиций начинаются с О (О — первый элемент).

Если в списках строк со строками связаны объекты, они остаются связанными
с теми же строками в их новых позициях.

Не применяйте метод Exchange к сортированным спискам TStringList. за
исключением случая взаимного перемещения двух одинаковых строк, связанных
с разными объектами. Дело в том, что метод Exchange не проверяет условий сорти-
ровки и может нарушить упорядоченность списка.

Пример

Пусть список List типа TList содержит указатели на целые числа. Тогда при-
веденная ниже программа перемещает на первое место указатель на минимальное
число (это один шаг пузырьковой сортировки).

for(int i = 1; i < List->Count; i++)

if(*((int *)List->Items[0]) > *( (int *)List->Items[i]))
List-exchange (0, i) ;

Полностью пузырьковая сортировка списка указателей на целые числа реали-
зуется вложенными циклами:

for(int j = 0; j < List->Count-l; j++)
for(int i = j; i < List->Count; i++)

if (*((int *)List->Items[j]) > *((int *)List->Items[i]))
List-exchange (j , i) ;

Expand

Увеличивает емкость списка типа TList
Класс TList

Прототип

TList* _fastcail Expand(void);

Описание

Метод Expand увеличивает емкость списка типа TList. выделяя память для
быстрого размещения новых элементов. Тем самым экономится время при добав-
лении в дальнейшем новых элементов списка.

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

Если список не заполнен, т.е. количество элементов Count меньше емкости
списка Capacity, то список не расширяется. Если же Count == Capacity, то функция
Expand увеличивает емкость Capacity согласно следующему алгоритму. Если зна-
чение Capacity меньше 4, то Capacity увеличивается на 4. Если значение Capacity
больше 4, но меньше 9, то Capacity увеличивается на 8. Если значение Capacity бо-
льше 8, то Capacity увеличивается на 16.