Добавлен: 23.05.2023
Просмотров: 128
Скачиваний: 2
СОДЕРЖАНИЕ
ГЛАВА 1. ПОНЯТИЕ И ОСОБЕННОСТИ ДИНАМИЧЕСКИХ СТРУКТУР ДАННЫХ
1.1 Определение «динамическая структура данных» и ее характеристики
1.2 Объявление динамических структур данных
1.3 Доступ к данным в динамических структурах
1.4 Работа с памятью при использовании динамических структур
2.6 Алфавитно-частотный словарь
{
-> = ->; // меняем нового узла
-> = ;
->-> = ; // меняем соседних узлов
-> = ;
}
}
Добавление узла заданным выполняется .
Поиск узла в .
Проход по двусвязному может выполняться двух направлениях – головы к (как для ) или от к голове.
Удаление
Эта процедура также ссылки на и хвост , поскольку они измениться при крайнего элемента . На первом этапе ссылки соседних (если они ) так, как бы удаляемого не было . Затем узел удаляется память, которую занимает, освобождается. Эти показаны на внизу. Отдельно проверяется, является ли узел первым последним узлом .
Рисунок 10
( &, &, )
{
( == ) {
= ->; // удаляем элемент
( )
-> = ;
= ; // удалили элемент
}
{
->-> = ->;
( -> )
->-> = ->;
= ; // последний элемент
}
;
}
2.11 Циклические списки
Иногда список (односвязный или двусвязный) замыкают в кольцо, то есть указатель next последнего элемента указывает на первый элемент, и (для двусвязных списков) указатель prev первого элемента указывает на последний. В таких списках понятие «хвоста» списка не имеет смысла, для работы с ним надо использовать указатель на «голову», причем «головой» можно считать любой элемент.
ЗАКЛЮЧЕНИЕ
Таким образом, подводя итог проделанной работе, отметим, что динамические структуры данных в процессе нахождения в памяти могут изменять не только количество составляющих их элементов, но и характер связей между элементами. Он не учитывает изменения содержимого самих элементов данных. Такая особенность динамических структур, такая как непостоянство их размера и характер взаимосвязи между элементами, приводит к тому, что на этапе создания машинного кода программа компилятора не может выделить память фиксированного размера для всей структуры в целом, а также нельзя сравнивать его с отдельными компонентами структуры конкретных адресов. Для решения проблемы обращения к динамическим структурам данных используется метод, называемый динамическим распределением памяти, то есть память для отдельных элементов выделяется в момент, когда они «начинают существовать» во время выполнения программы, а не во время компиляции. Компилятор в этом случае выделяет фиксированный объем памяти для хранения адреса динамически выделяемого элемента, а не самого элемента.