Лекция 3_Стеки, очереди, деки.ppt
- Количество слайдов: 54
Полустатические cтруктуры данных. Стеки. Очереди. Деки
► Структура данных - совокупность данных организованные определенным образом для каких либо условий
структуры данных Структуры данных Внешние, на внешнем носителе Внутренние, в оперативной памяти Линейные Прямоугольн Массивы, ые Статические таблицы Строковые Строка, Стек, Полустатические Очередь Связные Одно и списки Динамические двухсвязн ые списки Нелинейные Деревья, графы, многосвязные списки, (сети) Файлы, Базы данные
Полустатические структуры данных характеризуются следующими признаками: ► они имеют переменную длину и простые процедуры ее изменения; ► изменение длины структуры происходит в определенных пределах, не превышая какого-то максимального (предельного) значения. ► Доступ к элементу может осуществляться по его порядковому номеру.
Стек ► Упорядоченный набор элементов в котором размещение новых элементов и удаление существующих производится с одного конца ► одномерная структура данных, загрузка или увеличение элементов для которой осуществляется с помощью указателя стека в соответствии с правилом LIFO (Last In First Out)
3 2 1 Вершина
Операции над стеком ► Добавление в стек - push ► Удаление из стека – pop ► Прочитать элемент с вершины стека ( не извлекая) – peek ► Элементы в стеке любые
Реализация стека ► Статический - на базе массивов ► Динамический - на базе списков
Представление стека массивом
Представление стека динамической структурой Storage Тоp
O(1)
Методы внутри структуры реализация на основе списка
Key stack. h next
stack. cpp
pop Вершина Стека (Top) pr Key next NULL
nd info Вершина стека next info next push info NULL
Стеки в вычислительных системах ► при синтаксическом анализе вложенных друг в друга конструкций языка ► при вызове функции адрес возврата ► в архитектуре компьютеров - аппаратный стек. ► калькулятор на основе польской записи
Очереди ► Упорядоченный набор элементов, которые удаляются с одного конца, а помещаются в другой конец. ► одномерная структура данных организованная в соответствии с правилом FIFO (First In First Out)
3 2 1 Конец Начало
Операции над очередью ► Начальная установка ► Добавление - insert ► Удаление– remove ► Проверка переполнения очереди и включение в нее элемента ► Проверка элементов и исключение элемента
Представление очереди массивом
проблема концов очереди SIZE ► циклическая (или кольцевая) очередь next = (lst+1) % SIZE lst=5 next = (5+1)%6 = 0
На основе динамического массива
Queue q 1 = Create. Queue(3); a 1… a 2…. bool rc=Enq(q 1, &a 1); // rc=Enq(q 1, &a 2); Queue q 2 = Create. Queue(q 1);
Очереди в вычислительных системах ► BIOS PC ► Ресурсы многозадачных операционных системах (Windows, Unix, OS/2, и др. ). ► почтовый ящик задачи ► Компьютерные сети (таблицы маршрутизации)
очереди с приоритетами Порядок выборки элементов из таких очередей определяется приоритетами элементов.
► Приоритетная очередь – это абстрактный тип данных, предназначенный для представления взвешенных множеств (куч). ► Множество называется взвешенным, если каждому его элементу однозначно соответствует число, называемое ключом или весом. ► «первым включается – с высшим приоритетом исключается»
операции: ► вставить новый элемент со своим ключом ► найти с максимальным (минимальным) приоритетом; ► удалить элемент с максимальным (минимальным) приоритетом; ► увеличить (уменьшить) приоритет указанного элемента на заданное положительное число.
Деки ► Дек – особый вид очереди (от англ. deq – double ended queue, т. е очередь с двумя концами), в котором как включение, так и исключение элементов может осуществляться с любого из двух концов.
Операции над деком: ► включение элемента справа; ► включение элемента слева; ► исключение элемента справа; ► исключение элемента слева; ► определение размера; ► очистка.
Деки в вычислительных системах ► буфера ввода REXX: QUEUE - запись строки в конец буфера PULL - выборка строки из начала буфера PUSH - запись строки в начало буфера
?


