Стекът е линейна структура от данни. Работи на принципа LIFO (Last-In First-Out), тоест последен влязъл – първи излязъл. Можем да добавяме и изваждаме елементи само от едната страна.
За работа със стекове е необходимо да добавите библиотеката stack:
- #include <stack>
Декларирането на стек става по следния начин:
- //stack<тип_данни> име_на_стека;
- stack<int> s;
Стекът поддържа следните функции:
- empty() – връща TRUE ако стека няма елементи
- pop() – премахва най-горния елемент на стека
- push() – добавя елемент отгоре на стека
- size() – връща броя елементи в стека
- top() – връща стойността на най-горния елемент на стека
Задача: Разгледайте и тествайте следната програма, която показва всички функции в действие:
- #include <iostream>
- #include <stack>
- using namespace std;
- int main()
- {
- stack<int> s;
- cout<<„Broi elementi:“<<s.size()<<endl;
- s.push(1);
- s.push(2);
- s.push(3);
- cout<<„Broi elementi:“<<s.size()<<endl;
- cout<<„Gorniq element:“<<s.top()<<endl;
- s.pop();
- cout<<„Broi elementi:“<<s.size()<<endl;
- cout<<„Gorniq element:“<<s.top()<<endl;
- s.pop();
- cout<<„Broi elementi:“<<s.size()<<endl;
- cout<<„Gorniq element:“<<s.top()<<endl;
- cout<<„–––––––––„<<endl;
- stack<char> a;
- a.push(‘a’);
- a.push(‘b’);
- a.push(‘c’);
- a.push(‘d’);
- a.push(‘e’);
- a.push(‘f’);
- a.push(‘g’);
- cout<<„Broi elementi:“<<a.size()<<endl;
- while(!a.empty()){
- cout<<„Gorniq element:“<<a.top()<<endl;
- a.pop();
- }
- cout<<„Broi elementi:“<<a.size()<<endl;
- return 0;
- }
Автор: Мартин Михайлов