Stos - struktura LIFO 1. Stos jest strukturą jest strukturą danych
Transkrypt
Stos - struktura LIFO 1. Stos jest strukturą jest strukturą danych
Stos - struktura LIFO 1. Stos jest strukturą jest strukturą danych często używanych w algorytmach komputerowych. 2. Stos jest strukturą danych, do której dostęp jest możliwy tylko od strony tzw. wierzchołka, czyli Last In First Out (LIFO) - ostatni będą pierwszymi. Przykład: Stos kart do gry. Kładziemy karty jedna na drugiej. Gdy chcemy zobaczyć pierwszą z położonych kart, musimy najpierw zdjąć jedną kartę położoną jako ostatnia, potem następne karty aż do pierwszej położonej karty. 3. Do obsługi stosu stosuje się zazwyczaj: funkcję push(x) - odkładanie danych na wierzchołek stosu, x jest zmienną danego typu. Funkcja może zwracać kod błędu, np. stałą typu całkowitego, która informuje programistę, czy nie nastąpiła próba odłożenia na stosie w momencie gdy był on przepełniony (brak pamięci). funkcję pop(x) - pobranie elementu ze stosu, x jest zmienną danego typu. Funkcja może zwracać kod błędu, np. stałą typu całkowitego, która informuje programistę, czy nie nastąpiła próba zdjęcia ze stosu gdy był on pusty. 4. Implementacja #include <iostream> using namespace std; class stos{ private: struct wezel{ int liczba; wezel * next; wezel (int x, wezel * t){ //konstruktor liczba = x; next = t; } }; typedef wezel * doWezla; // wskaźnik do węzła,doWezla będzie typem oznaczającym doWezla szczyt; public: stos(); void push (int elem); int pop(); void write (); }; stos::stos(){ //konstruktor klasy stos szczyt=NULL; } void stos::push(int elem){ //funkcja z klasy stos dodająca element do stosu szczyt=new wezel(elem, szczyt); cout <<"Element dodany do stosu: " << elem << endl; } int stos::pop(){ //funkcja z klasy stos zdejmująca element ze stosu if (szczyt == NULL){ cout <<"Stos jest pusty.\n"; return 0 ; } else{ int zdjety = szczyt -> liczba; doWezla t = szczyt -> next; delete szczyt; szczyt = t; cout <<"Element zdjety ze stosu: " << zdjety << endl; return zdjety; } } void stos::write(){ //funkcja z klasy stos wypisująca elementy ze stosu doWezla temp; temp = szczyt; cout << "Stan stosu: "; while( temp != NULL){ cout << temp -> liczba << " "; temp = temp -> next; } cout << endl; } int main(int argc, char** argv) { stos st; // st obiekt klasy stos st.write(); st.pop(); st.push(2); st.write(); st.push(8); st.write(); st.push(14); st.write(); st.pop(); st.write(); st.pop(); st.write(); st.push(4); st.write(); return 0; } -----------BIBLIOGRAFIA: Algorytmy, struktury danych i techniki programowania; Piotr Wróblewski ; Wydanie V; Helion 2015 Algorytmy i struktury danych; Aho A. V., Hopcroft J. E, Ullman J. D.;Helion 2003