- •Технология программирования (pascal)
- •V. Структуры и организация данных
- •2. Динамические структуры данных
- •2.5. Линейные списки.
- •1. Получение доступа к k-му элементу списка для считывания и/или изменения его значения:
- •2. Вставка нового элемента списка после k-го элемента:
- •3. Удаление k-го элемента списка:
- •2.6. Циклические (кольцевые) списки.
- •Пример программы работы с двусвязным циклическим списком
- •3. Организация данных
- •3.1. Организация данных – стек.
- •Основные операции над стеком и описательные алгоритмы реализации некоторых из них
- •1. Создание элемента стека:
- •2. Добавление элемента в стек:
- •3. Удаление элемента из стека:
- •1. Стек как механизм реализации вложенности.
- •Пример подпрограмм, реализующих стек
- •3.2. Организация данных – очередь. Простая очередь
- •Дек (двусторонняя очередь)
- •Очереди с ограниченным входом и с ограниченным выходом
3.2. Организация данных – очередь. Простая очередь
Простая очередь представляет собой организацию данных, заключающуюся в том, что включение элементов в последовательность производится с одного конца этой последовательности, а исключение – с другого, – таким образом, доступ к элементам происходит по принципу FIFO (first in first out): первым пришел – первым вышел.
Примерами использования очередей являются диспетчеризация задач операционной системой, буферизация ввода/вывода и другие.
К базисным операциям над очередью относятся: создание пустой очереди; проверка очереди на пустоту; добавление элемента в конец (начало) очереди; удаление элемента из начала (конца) очереди; извлечение данных, начиная с первого (последнего) элемента очереди.
1. Представление простой очереди в виде списка
Простую очередь можно реализовать в виде линейного списка, в котором элементы включаются с одного конца, называемого хвостом, а выбираются и удаляются с другого конца, называемого вершиной. Для создания простой очереди и работы с ней необходимо иметь два указателя: на начало очереди и на конец очереди.
Описательные алгоритмы реализации операций над очередью.
1) Добавление элемента в очередь:
-
указатель вершины остается неизменным;
-
в ссылочное поле последнего элемента заносится адрес нового элемента;
-
указатель конца перемещается на новый элемент.
2) Удаление элемента из очереди:
-
удаляется первый элемент;
-
указатель вершины перемещается к следующему элементу.
2. Представление простой очереди в виде массива.
Простую очередь можно также представить последовательностью элементов в массиве: по мере постановки элементов в очередь ее конец будет продвигаться к концу массива, и то же самое будет происходить с началом при исключении элементов из очереди.
Если используется зацикливание очереди, то есть считается, что за последним элементом массива следует опять первый, то такой способ организации очереди в массиве называется циклическим буфером.
Дек (двусторонняя очередь)
Дек (двусторонняя очередь) представляет собой организацию данных, при которой можно добавлять и удалять элементы с двух сторон.
Дек достаточно просто можно организовать в виде двусвязного ациклического списка, первый и последний элементы которого соответствуют входам (выходам) дека.
Очереди с ограниченным входом и с ограниченным выходом
Очереди с ограниченным входом и с ограниченным выходом – это разновидности очередей, представляющие собой организацию данных, при которой можно добавлять и удалять элементы с одной стороны, а с другой – либо только добавлять, либо удалять; занимают промежуточное положение между деком и простой очередью.
Причем дек с ограниченным входом может быть использован как простая очередь или как стек.
Очередь с ограниченным входом или с ограниченным выходом так же, как дек или простую очередь, может быть организована на основе линейного двунаправленного списка.