Стекът е линейна структура от данни. Работи на принципа LIFO (Last-In First-Out), тоест последен влязъл – първи излязъл. Можем да добавяме и изваждаме елементи само от едната страна.

Уроци по програмиране

За работа със стекове е необходимо да добавите библиотеката stack:

  1. #include <stack>

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

  1. //stack<тип_данни> име_на_стека;
  2. stack<int> s;

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

 

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

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

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

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