Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЛК№16.doc
Скачиваний:
3
Добавлен:
24.08.2019
Размер:
113.66 Кб
Скачать

Лекция № 16.

ДИНАМИЧЕСКИЕ СТРУКТУРЫ ДАННЫХ. СТЕК

  1. Введение в динамические структуры

Часто в программах возникает необходимость использовать такие типы данных, размер и структура которых должны меняться в процессе работы. Динамические массивы здесь не выручают, поскольку заранее нельзя сказать, сколько памяти надо выделить – это выясняется только в ходе выполнения программы.

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

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

Наибольший интерес представляют связанные ДСД, то есть ДСД, между элементами которых устанавливаются определенные связи.

  1. Основные виды связных динамических структур данных

Каждая связная ДСД характеризуется

1) взаимосвязью элементов;

2) набором типовых операций над этой структурой (такой набор в основном состоит из операций записи, поиска и выборки).

В зависимости от типа связей и набора типовых операций связные ДСД классифицируются:

С вязные динамические структуры данных

Линейные (списки) Иерархические (деревья)

(частный случай: пирамида)

Односвязные Двусвязные Кольцевые

списки списки списки (одно- и двусвязные)

(частные случаи:

Стек Очередь Дек)

Линейные списки – данные динамической структуры, представляющие собой совокупность линейно связанных однородных элементов, в которой разрешается добавлять элементы между любыми двумя другими и удалять любой элемент.

Связанные списки могут иметь одиночные или двойные связи.

Список с одной связью (односвязный или однонаправленный список) содержит элементы, каждый из которых имеет связь со следующим элементом данных.

В списке с двойной связью (двусвязный или двунаправленный список) каждый элемент имеет связь как со следующим элементом, так и с предыдущим элементом.

В зависимости от допустимых действий над элементами списка выделяют частные случаи односвязного списка:

Стек – частный случай линейного односвязного списка, для которого разрешено удалять или добавлять элементы только с одного конца списка, который называется вершиной (головой) стека.

Очередь – частный случай линейного односвязного списка, для которого разрешены только два действия: добавление элемента в конец (хвост) очереди и удаление элемента из начала (головы) очереди.

Дек – частный случай линейного односвязного списка, для которого разрешено добавление и удаление элемента с любой стороны.

Кольцевые списки (кольцо) – данные динамической структуры, аналогичные линейным спискам, но имеющие дополнительную связь между первым и последним элементами списка.

Деревья – данные динамической иерархической структуры произвольной конфигурации. Элементы дерева называются вершинами (узлами).

Частным случаем дерева является

Пирамида (упорядоченное дерево) – дерево, в котором значения узлов всегда возрастают или убывают при переходе на следующий уровень.

Виды связей в различных ДДС:

ДДС

Связи

Односвязный

список

Двусвязный

список

Односвязное

кольцо

Двусвязное

кольцо

Дерево

следующий

предыдущий

начало и конец

произвольные

Частные случаи линейного односвязного списка:

ДДС

Операции

Стек

Очередь

Дек

Добавление элемента

в начало

(вершину)

в конец

(хвост)

с любой стороны

Удаление элемента

с начала

(вершины)

с начала

(головы)

с любой стороны

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]