Составители:
Рубрика:
за границу вектора, продолжаясь с его начала (вектор имитирует здесь так на-
зываемый кольцевой буфер). Эта ситуация изображена на рис. 2.5.
Рис. 2.5. Непрерывное представление очередив кольцевом буфере
Двух переменных Начало и Конец недостаточно, чтобы различить в дан-
ном представлении, например, два следующих состояния очереди: 1) Нача-
ло = Конец + 1 и очередь пуста (см.рис.2.6,а); 2) Начало = Конец + 1 и очередь
полна (см.рис.2.6,б). Простым решением этой проблемы является введение
еще одной переменной, идентифицирующей состояние очереди, а именно
переменной Длина, значение которой задает
текущее количество элементов
в очереди (для пустой очереди Длина = 0, для полной очереди Длина = n).
а
б
Рис. 2.6. Два состояния очереди, при которых Начало=Конец+1:
а – очередь пуста, б – очередь полна
Аналогичным образом может быть реализован дек.
2.3. Упражнения
В заданиях 1 – 3 следует использовать очередь и операции над ней; при
этом очередь может быть реализована как на базе вектора, так и в связанной
памяти (ссылочная реализация).
Mem:
n 1
2 3
x x x x x x x x x x x
Начало Конец
Mem:
n 1 2 3
Начало
Конец
Начало Конец
Mem:
n 3 2 1
x x x x x x x x x x x x x x x x x x x x
40
за границу вектора, продолжаясь с его начала (вектор имитирует здесь так на- зываемый кольцевой буфер). Эта ситуация изображена на рис. 2.5. 1 2 3 n Mem: x x x x x x x x x x x Начало Конец Рис. 2.5. Непрерывное представление очередив кольцевом буфере Двух переменных Начало и Конец недостаточно, чтобы различить в дан- ном представлении, например, два следующих состояния очереди: 1) Нача- ло = Конец + 1 и очередь пуста (см.рис.2.6,а); 2) Начало = Конец + 1 и очередь полна (см.рис.2.6,б). Простым решением этой проблемы является введение еще одной переменной, идентифицирующей состояние очереди, а именно переменной Длина, значение которой задает текущее количество элементов в очереди (для пустой очереди Длина = 0, для полной очереди Длина = n). 1 2 3 n Mem: Начало Конец а 1 2 3 n Mem: x x x x x x x x x x x x x x x x x x x x Конец Начало б Рис. 2.6. Два состояния очереди, при которых Начало=Конец+1: а – очередь пуста, б – очередь полна Аналогичным образом может быть реализован дек. 2.3. Упражнения В заданиях 1 – 3 следует использовать очередь и операции над ней; при этом очередь может быть реализована как на базе вектора, так и в связанной памяти (ссылочная реализация). 40
Страницы
- « первая
- ‹ предыдущая
- …
- 38
- 39
- 40
- 41
- 42
- …
- следующая ›
- последняя »