6.2.1. Реализовать операции с очередью ограниченной длины так,
чтобы количество действий для каждой операции было ограничено
константой, не зависящей от длины очереди.
Введем массив
        Содержание: array [0..n-1] of T
и переменные
        Первый: 0..n-1,
        Длина : 0..n.
При этом элементами очереди будут
Содержание [Первый+Длина-1],
где сложение выполняется по модулю n. (Предупреждение. Если вместо этого ввести переменные Первый и Последний, значения которых -- вычеты по модулю n, то пустая очередь может быть спутана с очередью из n элементов.)
Операции выполняются так:
Сделать пустой:
        Длина := 0;
        Первый := 0;
Добавить элемент:
        {Длина < n}
        Содержание [(Первый + Длина) mod n] := элемент;
        Длина := Длина + 1;
Взять элемент:
        {Длина > 0}
        элемент := Содержание [Первый];
        Первый := (Первый + 1) mod n;
        Длина := Длина - 1;
Пуста:
        Длина = 0
Очередной:
        Содержание [Первый]\
 
 6.2.2. (Сообщил А.Г. Кушниренко) Придумать способ моделирования
очереди с помощью двух стеков (и фиксированного числа переменных
типа T). При этом отработка n операций с очередью (начатых,
когда очередь была пуста) должна требовать порядка n действий.
 
 6.2.3. Деком называют структуру, сочетающую очередь и стек: класть
и забирать элементы можно с обоих концов. Как реализовать дек
ограниченного размера на базе массива так, чтобы каждая операция
требовала ограниченного числа действий?![]()
 
 6.2.4. (Сообщил А.Г. Кушниренко.) Имеется дек элементов типа T
и конечное число переменных типа T и целого типа. В
начальном состоянии в деке некоторое число элементов. Составить
программу, после исполнения которой в деке остались бы те же
самые элементы, а их число было бы в одной из целых переменных.