Стеки (stack)
Стеки - это множество элементов, сложенных в стопку. Например, у нас есть коробка 3х5. Мы кладем в нее доски такого же размера с различными узорами. У нас получается стек. Достать из него мы можем только начинаяя с последнего элемента, поэтому первый положенные элемент вынут будет последним. В стеках реализуется принцип first in last out (FILO).Для создания стека нужно подключить <stack> и в коде программы его объявить:
stack <type> name, где type - тип стека, а name - имя стека.
У стека есть немного функций:
- push() - добавить элемент
- pop() - удалить верхний элемент
- top() - получить верхний элемент
- size() - размер стека
- empty() - true, если стек пуст
string s;
stack <string> st;
while (cin>>s);
st.push(s);
while (!(st.empty()))
{cout<<st.top();st.pop()}
В этом примере мы считываем слова с клавиатури и выводим их в обратном порядкеОчереди (Queue)
Очереди, как следует из название, используют принцип first in first out (FIFO). То есть, тот, кого мы первым запихнули в очередь, первым из нее и выйдет (хотя в реальной жизни не всегда так....)Реализуются очереди также просто.
Подключаем <queue>
И создаем очередь
queue <type> name;
Перечень функций почти тот-же:
- push() - добавить элемент
- pop() - удалить первый элемент
- size() - размер очереди
- empty() - true, если очередь пуста
- front() - получить первый элемент
- back() - получить последний элемент
queue <int> events;
int n;
while (cin>>n)
events.push(n);
while (!events.empty)
{make(events.front());events.pop()}
В данном примере make - какая-то функция, обрабатывающая события.
Есть ли ограничения в размерах стека, и если есть, то как их снять
ОтветитьУдалить