https://www.programiz.com/cpp-programming/stack
Елементите од купот се додаваат според стратегијата на работа
наречена Last In Frst Out- LIFO "кој последен влегува прв излегува" . Ова значи
дека елементот што е последен додаден во стекот ќе биде првиот елемент што ќе
се отстрани од стекот
Доколку капацитетот на купот е n, тогаш во него може да се сместат само n податоци.
Основни операции:
•
иницијализација на празен куп
•
проверка дали е купот полн
•
ставање податок во купот
•
проверка дали е купот празен
• земање податок од куп
Основни операции со куп
push – додава елемент на врвот на стекотСинтакса: ime_na_stek.push(vrednost)
Vrednost се пренесува како параметар и како резултат се додава елемент во стекот.
Пр. stek1.push(77) stek1.push(88) Излез 77, 88
pop – го отстранува најгорниот елемент од стекот
Синтакса: ime_na_stek.pop()
Пр. stеk1 = 10,20,30; stеk1.pop(); Излез 10, 20
peek- го зема најгорниот елемент од стекот но не го отстранува
isFull – проверува дали стекот е полн
swap – се корист за замана на содржините на два стека
Empty- проверува дали стекот е празен
Синтакса: ime_na_stek.empty()
Враќа вредност true или false т.е. дали стекот е празен или не е.
size – број на елементи во купот
Синтакса: ime_na_stek.size() Враќа вредност број на елементи на стекот
top – пристап до најгорниот елемент на купот
Синтакса: ime_na_stek.top()
Враќа вредност на најгорниот елемент на стекот
Пр. ime_na_stek.push(5); ime_na_stek (6); ime_na_stek.top(); Излез: 6
Со додавањето на елемент, вредноста на
top се зголемува и новиот елемент се поставува на позиција на која покажува
top.
При (отстранување) бришење на елемент, се зема
елементот на кој покажува top и се намалува вредноста на top.
Пред да се внесе елемент, треба да се
провери дали стекот е полн.
Пред (отстранување) бришење на елемент треба да
се провери дали стекот е празен.
-
за наоѓање на обратен збор – се внесуваат сите букви и потоа се вадат една по
една и бидејќи редоследот на стекот е LIFO, се добиваат буквите во обратен
редослед.
- во
компајлери – компајлерите користат стек за да пресматаат вредности на изрази
како 2+4/5*(7-9) со претворање на изразот во префиксна или постфиксна форма.
- Во пребарувачи – копчето „назад“ ги
зачувува сите урл адреси на претходно посетени страни во стек. Секогаш кога се
посетува нова страна, нејзината адреса се додава на врввот на стекот. Кога ќе
се притисне копчето „назад“ тековната url адреса е извадена од стекот и се
пристапува до претходната урл адреса
#include <iostream>
#include <stack>
using namespace std;
int main() {
// create a stack of strings
stack<string> languages;
// add element to the Stack
languages.push("C++");
languages.push("Java");
languages.push("Python");
cout << languages.top();
return 0;
}
Python
Додавање елемент
#include <iostream>
#include <stack>
using namespace std;
int main() {
// create a stack of strings
stack<string> colors;
// push elements into the stack
colors.push("Red");
colors.push("Orange");
cout << "Stack: ";
// print elements of stack
while(!colors.empty()) {
cout << colors.top() << ", ";
colors.pop();
}
return 0;
}
Stack: Orange, Red,
#include <stack>
using namespace std;
int main() {
stack<int> stack;
stack.push(21);// The values pushed in the stack should be of the same data which is written
//during declaration of stack
stack.push(22);
stack.push(24);
stack.push(25);
int num=0;
stack.push(num);
stack.pop();
stack.pop();
stack.pop();
while (!stack.empty()) {
cout << stack.top() <<" ";
stack.pop();
} }
22 21
0 (false) - if the stack is not empty
#include <iostream>
#include <stack>
using namespace std;
int main() {
// create a stack of double
stack<double> nums;
cout << "Is the stack empty? ";
// check if the stack is empty
if (nums.empty()) {
cout << "Yes" << endl;
}
else {
cout << "No" << endl;
}
cout << "Pushing elements..." << endl;
// push element into the stack
nums.push(2.3);
nums.push(9.7);
cout << "Is the stack empty? ";
// check if the stack is empty
if (nums.empty()) {
cout << "Yes";
}
else {
cout << "No";
}
return 0;
}
#include <iostream>
#include <stack>
using namespace std;
// function prototype for display_stack utility
void display_stack(stack<string> st);
// create a stack of strings
stack<string> colors;
// push elements into the stack
colors.push("Red");
colors.push("Orange");
colors.push("Blue");
cout << "Initial Stack: ";
// print elements of stack
display_stack(colors);
// removes "Blue" as it was inserted last
colors.pop();
cout << "Final Stack: ";
// print elements of stack
display_stack(colors);
return 0;
}
// utility function to display stack elements
void display_stack(stack<string> st) {
while(!st.empty()) {
cout << st.top() << ", ";
st.pop();
}
cout << endl;
}
Initial Stack: Blue, Orange, Red,
Final Stack: Orange, Red,
No comments:
Post a Comment