Шта је стд :: стацк?
Стек је структура података која делује на основу ЛИФО (Ласт Ин Фирст Оут) технике. Стек стд :: омогућава додавање и уклањање елемената само с једног краја.
Класа стд :: стацк је адаптер контејнера. Објекти контејнера садрже податке сличног типа података. Можете створити стог из различитих контејнера за секвенце. Ако није обезбеђен контејнер, дека контаине ће се подразумевано користити. Адаптери контејнера не подржавају итераторе, па се не могу користити за манипулисање подацима.
У овом упутству за Ц ++ ћете научити
- Шта је стд :: стацк?
- Синтакса стека
- Врсте чланова
- Операције у стеку
- Имплементација стека
- пусх () и поп ()
- празно (), величина (), врх ()
- емплаце () и свап ()
- Стацк у СТЛ
Синтакса стека
Да бисмо креирали стек, у наш код морамо укључити датотеку заглавља <стацк>. Затим користимо ову синтаксу да дефинишемо стд :: стацк:
template> class stack;
- Тип - је тип елемента који се налази у стд :: стеку. То може бити било који ваљани тип Ц ++ или чак кориснички дефинисани тип.
- Контејнер - је врста основног објекта контејнера.
Врсте чланова
Ево типова члана стека:
- валуе_типе - први параметар предлошка, Т. Означава типове елемената.
- цонтаинер_типе - други параметар предлошка, Цонтаинер. Означава основни тип контејнера.
- сизе_типе- Непотписани интегрални тип.
Операције у стеку
Стек Ц ++ подржава следеће основне операције:
- пусх - додаје / гура ставку у стек.
- поп - Уклања / искаче ставку из стека.
- пеек - Враћа горњу ставку стека без уклањања.
- исФулл - Проверава да ли је стек пун.
- исЕмпти - Проверава да ли је стек празан.
Имплементација стека
Корак 1) У почетку имамо празан стек. Врх празног слога постављен је на -1.
Корак 2) Затим смо гурнули елемент 5 у стек. Врх стека ће усмерити на елемент 5.
Корак 3) Затим смо гурнули елемент 50 у стек. Врх стека се помера и показује на елемент 50.
Корак 4) Затим смо извели скочну операцију уклањајући горњи елемент из стека. Елемент 50 искаче из стека. Врх стека сада показује на елемент 5.
пусх () и поп ()
Функције стацк :: пусх () додају нову ставку на врх стека. Величина гомиле се повећава за 1 након уметања. Функција узима ову синтаксу:
stack.push(value)
Вредност је ставка коју треба убацити у стог.
Функција стецк :: поп () уклања горњи елемент стека. Ово је најновија ставка стека. Величина гомиле се смањује за 1 након уклањања. Ево синтаксе функције:
stack.pop()
Функција не узима параметре.
Пример 1:
#include#include using namespace std;int main() {stack st;st.push(10);st.push(20);st.push(30);st.push(40);st.pop();st.pop();while (!st.empty()) {cout << ' ' << st.top();st.pop();}}
Излаз:
Ево снимка екрана кода:
Објашњење кода:
- Укључите иостреам датотеку заглавља у наш код да бисте користили његове функције.
- Укључите датотеку заглавља стека у наш код да бисте користили његове функције.
- Укључите стд простор имена у наш код да бисте користили његове класе без позивања.
- Позовите главну () функцију. У ову функцију треба додати програмску логику.
- Створите ст. Ст. За чување целобројних вредности.
- Помоћу функције пусх () уметните вредност 10 у стек.
- Помоћу функције пусх () уметните вредност 20 у стек.
- Помоћу функције пусх () уметните вредност 30 у стек.
- Помоћу функције пусх () уметните вредност 40 у стек.
- Помоћу функције поп () уклоните горњи елемент из стека, односно 40. Горњи елемент сада постаје 30.
- Помоћу функције поп () уклоните горњи елемент из стека, односно 30. Горњи елемент сада постаје 20.
- Користите функцију вхиле лооп и емпти () да бисте проверили да ли стек НИЈЕ празан. Тхе! је оператер НОТ.
- Штампање тренутног садржаја стека на конзоли.
- Позовите функцију поп () на стеку.
- Крај тела вхиле петље.
- Крај тела главне () функције.
празно (), величина (), врх ()
Стекови имају уграђене функције помоћу којих се можете поиграти са стеком и његовим вредностима. Ови укључују:
- емпти () - проверава да ли је стек празан или не.
- сизе () - враћа величину стека, односно број елемената у стеку.
- топ () - приступа елементу стека на врху.
Пример 2:
#include#include using namespace std;void createStack(stack mystack){stack ms = mystack;while (!ms.empty()){cout << '\t' << ms.top();ms.pop();}cout << '\n';}int main(){stack st;st.push(32);st.push(21);st.push(39);st.push(89);st.push(25);cout << "The stack st is: ";createStack(st);cout << "\n st.size() : " << st.size();cout << "\n st.top() : " << st.top();cout << "\n st.pop() : ";st.pop();createStack(st);return 0;}
Излаз:
Ево снимка екрана кода:
Објашњење кода:
- Укључите датотеку заглавља иостреам у наш код како бисте користили његове функције.
- Укључите датотеку заглавља стека у наш код како бисте користили његове функције.
- Укључите стд простор имена у наш програм како бисте користили његове класе без позивања.
- Направите функцију цреатеСтацк помоћу које можемо створити стацк мистацк. Стек ће садржати скуп целих бројева.
- Почетак тела функције цреатеСтацк.
- Направите инстанцу типа података мистацк и дајте му име мс.
- Користите вхиле петљу и функцију емпти () да бисте проверили да ли је стек празан.
- Почетак тела вхиле петље.
- Користите функцију топ () која је сачувана на врху стека. Знак \ т ће створити нову картицу.
- Користите функцију поп () за брисање елемента на врху стека.
- Крај тела вхиле петље.
- Одштампајте празан ред на конзоли.
- Крај тела функције цреатеСтацк.
- Позовите главну () функцију. Логику програма треба додати у тело главне () функције.
- Почетак тела функције маин ().
- Стварање предмета слога ст.
- Помоћу функције пусх () уметните елемент 32 у стек.
- Помоћу функције пусх () уметните елемент 21 у стек.
- Помоћу функције пусх () уметните елемент 39 у стек.
- Помоћу функције пусх () уметните елемент 89 у стек.
- Помоћу функције пусх () уметните елемент 25 у стек.
- Одштампајте мало текста на конзоли.
- Позовите функцију цреатеСтацк да бисте извршили горе наведене операције уметања у стек.
- Одштампајте величину слога на конзоли заједно са осталим текстом.
- Одштампајте елемент на врху стека на конзоли.
- Одштампајте мало текста на конзоли.
- Избришите елемент на врху стека. Затим ће вратити елементе преостале у стеку.
- Позовите функцију цреатеСтацк да бисте извршили горе наведене операције.
- Програм мора вратити вредност након успешног завршетка.
- Крај тела функције маин ().
емплаце () и свап ()
Ово су друге уграђене функције стека:
- емплаце () - конструише затим убацује нови елемент на врх стека.
- свап () - размењује садржај стека са садржајем другог стека.
Пример 3:
#include#include #include using namespace std;int main() {stack st1;stack st2;st1.emplace(12);st1.emplace(19);st2.emplace(20);st2.emplace(23);st1.swap(st2);cout << "st1 = ";while (!st1.empty()) {cout << st1.top() << " ";st1.pop();}cout << endl << "st2 = ";while (!st2.empty()) {cout << st2.top() << " ";st2.pop();}}
Излаз:
Ево снимка екрана кода:
Објашњење кода:
- Укључите иостреам датотеку заглавља у наш код да бисте користили његове функције.
- Укључите датотеку заглавља стека у наш код да бисте користили његове функције.
- Укључите датотеку заглавља цстдлиб у наш код да бисте користили његове функције.
- Укључите стд простор имена у наш код да бисте користили његове класе без позивања.
- Позовите главну () функцију. Програмска логика ће бити додата унутар тела ове функције.
- Прогласите стог под називом ст1 за чување целобројних вредности.
- Прогласите стог под називом ст2 за чување целобројних вредности.
- Користите функцију емплаце () за уметање целог броја 12 у стек под називом ст1.
- Користите функцију емплаце () за уметање целог броја 19 у стек под називом ст1.
- Користите функцију емплаце () да убаците цео број 20 у стек под називом ст2.
- Користите функцију емплаце () за уметање целог броја 23 у стек под називом ст2.
- Помоћу функције свап () замените садржај два стека, ст1 и ст2. Садржај стека ст1 треба преместити у стек ст2. Садржај стека ст2 треба преместити у стек ст1.
- Одштампајте мало текста на конзоли.
- Користите наредбу вхиле и функцију емпти () да бисте проверили да ли стек ст1 није празан.
- Одштампајте садржај стека ст1 на конзоли. "" Додаје размак између елемената стека приликом њиховог штампања на конзоли.
- Извршите функцију поп () на стеку ст1 да бисте уклонили горњи елемент.
- Крај тела изјаве вхиле.
- Одштампајте мало текста на конзоли. Ендл је кључна реч Ц ++ за крајњи ред. Премешта курсор миша у следећи ред да би одатле започело штампање.
- Користите наредбу вхиле и функцију емпти () да бисте проверили да ли стек ст2 није празан.
- Одштампајте садржај стека ст2 на конзоли. "" Додаје размак између елемената стека приликом њиховог штампања на конзоли.
- Извршите функцију поп () на стеку ст2 да бисте уклонили горњи елемент.
- Крај тела изјаве вхиле.
- Крај тела главне () функције.
Стацк у СТЛ
СТЛ (Стандард Темплате Либрари) долази са класама класа које пружају уобичајене Ц ++ структуре података. Према томе, стек се такође може применити у СТЛ. Једноставно укључујемо ову библиотеку у наш код и користимо је за дефинисање стека.
stackst;
Горња синтакса проглашава стацк ст елементима типа података Т.
Пример 3:
#include#include #include using namespace std;int main() {stack st;st.push(12);st.push(19);st.push(20);cout << st.top();cout << st.size();}
Излаз:
Ево снимка екрана кода:
Објашњење кода:
- Укључите иостреам датотеку заглавља у наш код да бисте користили његове функције.
- Укључите датотеку заглавља стека у наш код да бисте користили његове функције.
- Укључите датотеку заглавља цстдлиб у наш код да бисте користили његове функције.
- Укључите стд простор имена у наш код да бисте користили његове класе без позивања.
- Позовите главну () функцију. Логику програма треба додати у тело ове функције.
- Прогласите стог ст за чување целобројних података.
- Додајте елемент 12 у стог.
- Додајте елемент 19 у стог.
- Додајте елемент 20 у стог.
- Одштампајте елемент на врху стека на конзоли.
- Одштампајте величину слога на конзоли.
- Крај тела функције маин ().
Резиме:
- Стек је структура података која делује на основу ЛИФО (Ласт Ин фирст Оут) технике.
- Стек стд :: омогућава само додавање и уклањање предмета са једног краја.
- Класа стд :: стацк је адаптер контејнера који садржи ставке сличног типа података.
- Склоп се може креирати из различитих контејнера за секвенце.
- Ако не наведете контејнер, декуе спремник ће се подразумевано користити.
- Функција пусх () служи за уметање предмета у стек.
- Функција поп () служи за уклањање горње ставке из корака.
- Функција емпти () служи за проверу да ли је стек празан или не.