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.