double arrow

Хранение ключей в общем символьном массиве

Выделяется одномерный символьный массив, в который заносятся все

ключи. Обращение к элементам этого массива осуществляется по индексу

или непосредственно по указателю (рис. 1.3).

Массив для хранения ключей может быть выделен как статически до

начала выполнения программы, так и динамически в ходе ее работы. Вариант

структуры элемента с обращением по указателю идентичен структуре,при-

веденной для предшествующего метода.

Использование индекса для обращения к ключу вместе с массивом для

хранения ключей можно описать следующим образом:

#define nameArraySize 10000 // размер массива ключей


char nameArray[nameArraySize]; // массив ключей

Int firstFree; // начало незанятой области массива ключей

// организация элемента таблицы имен при

// хранении ключа в специальном массиве.

struct element {

Int nameIndex; // индекс ключа

Int count; // счетчик частоты встречаемости

};

Элемент



Указатель на

Ключ


Данные


Символьный массив




Предыдущий ключ


Ключ

данного элемента


Следующий ключ


Рис. 1.3. Элемент таблицы с хранением ключей в общем символьном массиве

Преимущества. Организовано хранение ключей произвольной дли-

ны. Отсутствуют затраты на динамическое распределение памяти. Простота

вделения отдельного ключа.

Недостатки. Возможно переполнение массива и его неэффективное

использование. В случае удаления элементов списка в массиве возникают

«дыры», которые надо каким-либо образом ликвидировать (например, сдви-

гая все элементы массива) или перераспределять в дальнейшем. Обычно та-

кая операция сжатия не реализуется, так как данный метод хранения исполь-

зуется только в системах массовым удалением всех элементов таблицы.

Массовая же очистка массива ключей осуществляется простым обнулением

индекса первого свободного символа.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



Сейчас читают про: