Skip to the content.

Очередь

Структура данных очередь (англ. queue) поддерживает две операции:

Первым из очереди удаляется элемент, который был помещен туда первым, то есть в очереди реализуется принцип «первым вошел — первым вышел» (англ. first-in, first-outFIFO)

Дек

Структура данных дек (англ. double ended queue) поддерживает следующие операции:

Дек поддерживает как FIFO, так и LIFO, поэтому на его основе можно реализовать стек и обычную очередь.

Как пользоваться

Python

В стандартной библиотеке collections есть реализация дека. Его же надо использовать и для очереди.

from collections import deque

a = deque([1, 2])
a.append(3)
a.appendleft(4)

print(a)  # deque([4, 1, 2, 3])

print(a[0])  # 4
print(a.popleft())  # 4, удаляет элемент и возвращает его

print(a[-1])  # 3
print(a.pop())  # 3, удаляет элемент и возвращает его

print(a)  # deque([1, 2])

C++

Очередь

#include <iostream>
#include <queue>

using namespace std;

int main() {
    queue<string> animals;

    // push elements into the queue
    animals.push("Cat");
    animals.push("Dog");

    while (!animals.empty()) {
        cout << animals.front() << " ";
        animals.pop();
    }

    // Output: Cat Dog
}

Дек

#include <iostream>
#include <deque>

using namespace std;

int main() {
    deque<int> d = {7, 5, 16, 8};

    d.push_front(13);
    cout << d.front() << '\n';  // 13
    d.pop_front();
    d.push_back(25);
    cout << d.back() << '\n';  // 25
    d.pop_back();

    for (int n: d) {
        cout << n << ' ';
    }

    // Output: 7 5 16 8
}