Oпашката е линейна структура от данни. Работи на принципа FIFO (First-In First-Out), тоест първи влязъл – първи излязъл. Можем да добавяме елементи само в края на опашката и да изваждаме само от началото. За пример можем да вземем опашката на магазина, когато се наредите последни на опашката, то последни и ще излезете, съответно първият, влязъл в опашката, излиза първи. Принципът е същият.

За работа с опашки е необходимо да добавите библиотеката <strong>queue</strong>:

  1. #include <queue>

Декларирането на опашка става по следния начин:

  1. //queue<тип_данни> име_на_опашката;
  2. queue<int> q;

Опашката поддържа следните функции:

 

    • back() – връща стойността на последния елемент от опашката
    • empty() – връща TRUE ако опашката няма елементи
    • front() – връща стойноста на първия елемент от опашката
    • pop() – премахва първия елемент от опашката
    • push() – добавя елемент в края на опашката
    • size() – връща броя елементи в опашката

Задача: Разгледайте и тествайте следната програма, показваща всички функции в действие:

  1. #include <iostream>
  2. #include <queue>
  3. using namespace std;
  4. int main()
  5. {
  6.      queue<int> q;
  7.      cout<<„Broi elementi:“<<q.size()<<endl;
  8.      q.push(1);
  9.     q.push(2);
  10.     q.push(3);
  11.     cout<<„Broi elementi:“<<q.size()<<endl;
  12.     cout<<„Purviq element:“<<q.front()<<endl;
  13.     cout<<„Posledniq element:“<<q.back()<<endl;
  14.     q.pop();
  15.     cout<<„Broi elementi:“<<q.size()<<endl;
  16.     cout<<„Purviq element:“<<q.front()<<endl;
  17.     cout<<„Posledniq element:“<<q.back()<<endl;
  18.     q.pop();
  19.     cout<<„Broi elementi:“<<q.size()<<endl;
  20.     cout<<„Purviq element:“<<q.front()<<endl;
  21.     cout<<„Posledniq element:“<<q.back()<<endl;
  22.     cout<<„–––––––––„<<endl;
  23.     queue<char> a;
  24.     a.push(‘a’);
  25.     a.push(‘b’);
  26.     a.push(‘c’);
  27.     a.push(‘d’);
  28.     a.push(‘e’);
  29.     a.push(‘f’);
  30.     a.push(‘g’);
  31.     cout<<„Broi elementi:“<<a.size()<<endl;
  32.     while(!a.empty()){
  33.     a.pop();
  34.     cout<<„Broi elementi:“<<a.size()<<endl;
  35.     }
  36.     return 0;
  37. }

Опашките намират широко приложение в програмирането. Много алгоритми, свързани с графи (като например BFS – Breadth First Search), използват опашки.

Автор: Мартин Михайлов