
Форма представления структур данных в памяти.
Форма представления структур данных в памяти зависит от предполагаемого использования данных. Основное различие форм представления данных в памяти определяется, в первую очередь, тем, как адресуются элементы данных в памяти машины (по месту или по содержимому). Если используется адресация по месту, то указываются логические и физические адреса. Если по содержимому, то используется значение ключа. Наиболее простой формой хранения является одномерный линейный список. Это множество объектов, структурные свойства которого связанны только с линейным относительным расположением узлов, компоненты которой идентифицированы порядковым номером, указывающих их относительное положение в последовательности.
В случае линейного списка адресная функция состоит из операций смещения и масштабирования. Адресная функция это отображение логической структуры данных на физическую структуру хранения.
При реализации линейного списка возможны 2 основных метода распределения памяти это последовательная и связанная. При последовательном распределении памяти узлы списка размещаются в последовательных элементах памяти.
Альфа – адрес
Бета – адрес базы данных.
Связанное распределение (список). При этом распределении памяти для построения структуры необходимо задать отношения следования и предшествования элементов с помощью указателей.
У1 |
У2 |
У3 |
У1 |
У2 |
У3 |
У4 |
У3 |
У
У1 | |
У2 | |
У3 | |
казателями служат адреса, хранимые в записях данных. Значение адресной функции можно получить просмотром хранящихся указателей.
Данная форма распределения памяти не требует хранения записей в последовательных ячейках памяти. Наличие указателей позволяет размещать узлы списка в любом свободном месте.
Важной разновидностью списков является циклический список. Связь от последнего узла идет к первому узлу списка, то есть можно получить доступ к любому узлу списка, отправляясь от любого заданного узла.
Голова списка
У4 |
У4 |
У4 |
У4 | |
У4 | |
У4 | |
Узлы списка.
Д вунаправленный список.
Базируясь на использовании связанных линейных списков можно реализовывать в памяти сложные нелинейные структуры. Например, древовидные или сетевые. Для этого необходимо иметь достаточное количество указателей. При работе используют 3 типа указателей.
Действительный (машинный) – используют когда необходимо получить наибольшую скорость обработки данных. Серьезный недостаток – жесткая привязка записей к конкретному месту расположения в памяти.
Символический. Позволяет перемещать отдельные записи относительно друг друга. Или включать и удалять записи без изменения указателей во всех остальных записях. Данный тип указателей рекомендуют использовать для интенсивно изменяющихся файлов.
Относительный. Позволяет размещать записи в любом месте памяти и на различных устройствах без изменения значений указателей, но, при этом, относительное расположение узлов списка должно оставаться постоянным.