Скачать презентацию Полустатические cтруктуры данных Стеки Очереди Деки Скачать презентацию Полустатические cтруктуры данных Стеки Очереди Деки

Лекция 3_Стеки, очереди, деки.ppt

  • Количество слайдов: 54

Полустатические cтруктуры данных. Стеки. Очереди. Деки Полустатические cтруктуры данных. Стеки. Очереди. Деки

► Структура данных - совокупность данных организованные определенным образом для каких либо условий ► Структура данных - совокупность данных организованные определенным образом для каких либо условий

структуры данных Структуры данных Внешние, на внешнем носителе Внутренние, в оперативной памяти Линейные Прямоугольн структуры данных Структуры данных Внешние, на внешнем носителе Внутренние, в оперативной памяти Линейные Прямоугольн Массивы, ые Статические таблицы Строковые Строка, Стек, Полустатические Очередь Связные Одно и списки Динамические двухсвязн ые списки Нелинейные Деревья, графы, многосвязные списки, (сети) Файлы, Базы данные

Полустатические структуры данных характеризуются следующими признаками: ► они имеют переменную длину и простые процедуры Полустатические структуры данных характеризуются следующими признаками: ► они имеют переменную длину и простые процедуры ее изменения; ► изменение длины структуры происходит в определенных пределах, не превышая какого-то максимального (предельного) значения. ► Доступ к элементу может осуществляться по его порядковому номеру.

Стек ► Упорядоченный набор элементов в котором размещение новых элементов и удаление существующих производится Стек ► Упорядоченный набор элементов в котором размещение новых элементов и удаление существующих производится с одного конца ► одномерная структура данных, загрузка или увеличение элементов для которой осуществляется с помощью указателя стека в соответствии с правилом LIFO (Last In First Out)

3 2 1 Вершина 3 2 1 Вершина

Операции над стеком ► Добавление в стек - push ► Удаление из стека – Операции над стеком ► Добавление в стек - push ► Удаление из стека – pop ► Прочитать элемент с вершины стека ( не извлекая) – peek ► Элементы в стеке любые

Реализация стека ► Статический - на базе массивов ► Динамический - на базе списков Реализация стека ► Статический - на базе массивов ► Динамический - на базе списков

Представление стека массивом Представление стека массивом

Представление стека динамической структурой Storage Тоp Представление стека динамической структурой Storage Тоp

O(1) O(1)

Методы внутри структуры реализация на основе списка Методы внутри структуры реализация на основе списка

Key stack. h next Key stack. h next

stack. cpp stack. cpp

pop Вершина Стека (Top) pr Key next NULL pop Вершина Стека (Top) pr Key next NULL

nd info Вершина стека next info next push info NULL nd info Вершина стека next info next push info NULL

Стеки в вычислительных системах ► при синтаксическом анализе вложенных друг в друга конструкций языка Стеки в вычислительных системах ► при синтаксическом анализе вложенных друг в друга конструкций языка ► при вызове функции адрес возврата ► в архитектуре компьютеров - аппаратный стек. ► калькулятор на основе польской записи

Очереди ► Упорядоченный набор элементов, которые удаляются с одного конца, а помещаются в другой Очереди ► Упорядоченный набор элементов, которые удаляются с одного конца, а помещаются в другой конец. ► одномерная структура данных организованная в соответствии с правилом FIFO (First In First Out)

3 2 1 Конец Начало 3 2 1 Конец Начало

Операции над очередью ► Начальная установка ► Добавление - insert ► Удаление– remove ► Операции над очередью ► Начальная установка ► Добавление - insert ► Удаление– remove ► Проверка переполнения очереди и включение в нее элемента ► Проверка элементов и исключение элемента

Представление очереди массивом Представление очереди массивом

проблема концов очереди SIZE ► циклическая (или кольцевая) очередь next = (lst+1) % SIZE проблема концов очереди 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 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, Очереди в вычислительных системах ► BIOS PC ► Ресурсы многозадачных операционных системах (Windows, Unix, OS/2, и др. ). ► почтовый ящик задачи ► Компьютерные сети (таблицы маршрутизации)

очереди с приоритетами Порядок выборки элементов из таких очередей определяется приоритетами элементов. очереди с приоритетами Порядок выборки элементов из таких очередей определяется приоритетами элементов.

► Приоритетная очередь – это абстрактный тип данных, предназначенный для представления взвешенных множеств (куч). ► Приоритетная очередь – это абстрактный тип данных, предназначенный для представления взвешенных множеств (куч). ► Множество называется взвешенным, если каждому его элементу однозначно соответствует число, называемое ключом или весом. ► «первым включается – с высшим приоритетом исключается»

операции: ► вставить новый элемент со своим ключом ► найти с максимальным (минимальным) приоритетом; операции: ► вставить новый элемент со своим ключом ► найти с максимальным (минимальным) приоритетом; ► удалить элемент с максимальным (минимальным) приоритетом; ► увеличить (уменьшить) приоритет указанного элемента на заданное положительное число.

Деки ► Дек – особый вид очереди (от англ. deq – double ended queue, Деки ► Дек – особый вид очереди (от англ. deq – double ended queue, т. е очередь с двумя концами), в котором как включение, так и исключение элементов может осуществляться с любого из двух концов.

Операции над деком: ► включение элемента справа; ► включение элемента слева; ► исключение элемента Операции над деком: ► включение элемента справа; ► включение элемента слева; ► исключение элемента справа; ► исключение элемента слева; ► определение размера; ► очистка.

Деки в вычислительных системах ► буфера ввода REXX: QUEUE - запись строки в конец Деки в вычислительных системах ► буфера ввода REXX: QUEUE - запись строки в конец буфера PULL - выборка строки из начала буфера PUSH - запись строки в начало буфера

? ?