Similar presentations:
Динамические линейные структуры данных. Стеки и очереди
1.
Динамические линейныеструктуры данных
Стеки и очереди
2.
Стек (stack)3.
ОпределениеСтруктура данных, в которой
1. Элементы хранятся в виде
последовательности (линейно)
2. Элементы добавляются в стек и
извлекаются из него только с одного
конца (вершина стека)
3. Работать можно только с самым верхним
элементом стека
4.
Иллюстрация5.
Иллюстрация6.
Обозначения7.
Основные операции8.
Принцип стекаLIFO (Last In First Out)
Последним вошёл, первым вышел
9.
Возможные ошибки10.
Реализация стека. Функция push11.
Переполнение стека12.
Проверка на переполнение стекаВ самом начале функции push:
Если (top == размер_стека - 1), то выходим
из функции
* выход из функции – оператор return
13.
Реализация стека. Функция pop14.
Извлечение из пустого стека15.
Проверка на извлечение из пустогостека
В самом начале функции pop:
Если (top == - 1), то выходим из функции
16.
Стек пуст и стек заполнен• top == -1 => стек пуст (извлекать нельзя)
• top == N -1 => стек заполнен (добавлять
нельзя)
17.
Функции push и pop18.
Пример: расстановка скобок19.
Пример: расстановка скобок20.
Пример: расстановка скобок21.
Стек вызовов22.
Стек вызовов23.
Очередь (queue)24.
ОпределениеСтруктура данных, в которой
1. Элементы хранятся в виде
последовательности (линейно)
2. Элементы добавляются в конец очереди,
извлекаются с начала
3. Работать можно с первым и последним
элементами очереди
25.
Иллюстрация26.
Принцип очередиFIFO (First In First Out)
Первым вошёл, первым вышел
27.
Реализация очереди28.
Реализация очереди. Функция push29.
Реализация очереди. Функция pop30.
Проверки на переполнение очередии извлечение из пустой очереди
см. стек (аналогично)
31.
Применение очереди. Очередьсобытий
32.
Применение очереди33.
Реализация стека/очереди• Одномерный/двумерный массив
• Односвязный/двусвязный список
• Необходимы функции push и pop для
добавления/извлечения элементов