Stack

kudlatyr

Stos jest kontenerem, w którym wykorzystywana jest kolejka LIFO(Last In First Out - ostatni wchodzi pierwszy wychodzi). W tej strukturze mamy dostęp tylko do ostatniego dodanego elementu.

Aby można było skorzystać z tego kontenera należy dodać bibliotekę pisząc

#include <stack>.

lista metod, które posiada ta struktura:

empty() - zwraca wartość true gdy stos nie posiada żadnego elementu.
size() - zwraca ilość elementów na stosie.
push() - wstawia element na stos.
top() - odczytuje element ze szczytu stosu.
pop() - usuwa element ze szczytu stosu.

Inicjowanie stosu wygląda tak:

stack<typ> nazwa;

typ - określa jakiego typu elementy mogą być wstawiane na stos.
nazwa - nazwa tworzonego stosu.

#include <iostream>
#include <stack>
using namespace std;
int main(){
     stack<int> stos;
     stos.push(5);
     cout<<"dodano element o wartosci: "<<stos.top()<<endl; // wyświetli dodano element o wartosci: 5
     stos.push(54);
     cout<<"dodano element o wartosci: "<<stos.top()<<endl; // wyświetli dodano element o wartosci: 54
     if(stos.empty()){
                    cout<<"stos jest pusty\n";// ten komunikat nie zostanie wyswietlony
     }
     else{
          cout<<"stos posiada "<<stos.size()<<" elementow\n"; //stos posiada 2 elementow
          cout<<"wartosc elementu na szczycie stosu wynosi : "<<stos.top()<<"\n";
          // wartosc elementu na szczycie stosu wynosi : 54
          stos.pop(); // usuwa element ze szczytu.
          cout<<"stos posiada "<<stos.size()<<" elementow\n"; // stos posiada 1 elementow
          cout<<"wartosc elementu na szczycie stosu wynosi : "<<stos.top()<<endl<<endl<<endl<<endl; 
          //wartosc elementu na szczycie stosu wynosi : 5
          }
                         
     system("PAUSE");
     return 0;
}

Na stosie mogą znajdować się elementy jednego typu.
W tym przykładzie stworzono stos gdzie wstawiane mogą być jedynie elementy typu int

stack<int> stos;

Aby wstawić elementy innego typu zamiast "int" musimy podać typ elementów, które będą dodawane na stos, np.

stack<string> stos

Należy jeszcze pamiętać, że podczas usuwania elementu z pustego stosu wystąpi wyjątek.

0 komentarzy