Stack Red

 https://www.programiz.com/cpp-programming/stack

 Стeк куп е основна структура на податоци која се користи за складирање на елементи на линеарен начин.

Елементите од купот се додаваат според стратегијата на работа наречена 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 се користи за да го означува горниот елемент на стекот. Кога се иницијализира стек, неговата вредност е -1, па за да се провери дали стекот е празен, може (top ==-1) да се спореди со -1.

Со додавањето на елемент, вредноста на 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");

// print top element
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 <iostream>

#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

 Check if the Stack Is Empty

We use the empty() method to check if the stack is empty. 
This method returns:
1 (true) - if the stack is empty
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);

int main() {
// 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: