Stos (informatyka) - Google

Stos (informatyka)

Z Wikipedii

(Przekierowano z LIFO)
Skocz do: nawigacji, szukaj

Stos (ang. Stack) – liniowa struktura danych, w której dane dokładane są na wierzch stosu i z wierzchołka stosu są pobierane (bufor typu LIFO, Last In, First Out; ostatni na wejściu, pierwszy na wyjściu). Ideę stosu danych można zilustrować jako stos położonych jedna na drugiej książek – nowy egzemplarz kładzie się na wierzch stosu i z wierzchu stosu zdejmuje się kolejne egzemplarze. Elementy stosu poniżej wierzchołka stosu można wyłącznie obejrzeć, aby je ściągnąć, trzeba najpierw po kolei ściągnąć to, co jest nad nimi.

Przeciwieństwem stosu jest kolejka, bufor typu FIFO (ang. First In, First Out; pierwszy na wejściu, pierwszy na wyjściu), w którym dane obsługiwane są w takiej kolejności, w jakiej zostały dostarczone (jak w kolejce do kasy).

Spis treści

[edytuj] Podstawowe operacje

W powyższym opisie pojawiły się pewne operacje, jakie można wykonywać na stosie. Oto ich formalny zapis:

  • push(obiekt) – czyli odÅ‚ożenie obiektu na stos;
  • pop() – Å›ciÄ…gniÄ™cie obiektu ze stosu i zwrócenie jego wartoÅ›ci;
  • isEmpty() - sprawdzenie czy na stosie znajdujÄ… siÄ™ już jakieÅ› obiekty.

[edytuj] Implementacja

Strukturami danych służącymi do reprezentacji stosu mogą być tablice (gdy znamy maksymalny rozmiar stosu), tablice dynamiczne lub listy. Złożoność obliczeniowa operacji na stosie zależy od konkretnej implementacji, ale w większości przypadków jest to czas stały O(1).

[edytuj] Tablica statyczna

Class Stos
     {
     Tablica[0..MAX_ROZMIAR]   //tablica elemntow stosu o rozmiarze MAX_ROZMIAR
     licznik = 0;
     
     Push(Wartosc)
         Tablica[licznik] = Wartosc;
         licznik = licznik + 1;
     Pop()
         licznik = licznik - 1;
         return Tablica[licznik];
     };

[edytuj] Lista

Class Element_stosu
    poprzednik       // Wskaznik na poprzedni element stosu 
    wartosc          // Wartość przechowywana w danym elemencie stosu

Klasa Stos
    Top = NULL       //Wierzchołek stosu 
    
    Push(Wartosc)    //dodanie elementu 
       nowy = Nowy element stosu 
       nowy.wartosc = Wartosc
       nowy.poprzednik = Top
       Top = nowy 
    Pop()            //sciagniecie elementu
       wartosc = Top.wartosc 
       pomocnik = Top
       Top = Top.poprzednik
       usun(pomocnik) //usun sciagniety wierzcholek

[edytuj] Przykład – stos i odwrotna notacja polska

Stos znajduje zastosowanie przy obliczaniu wyrażeń zapisanych za pomocą odwrotnej notacji polskiej (RPN). Algorytm wygląda następująco:

  • Wyzeruj stos.
  • Dla wszystkich symboli z wyrażenia RPN wykonuj:
    • jeÅ›li i-ty symbol jest liczbÄ…, to odłóż go na stos,
    • jeÅ›li i-ty symbol jest operatorem to:
      • zdejmij ze stosu jeden element (ozn. a),
      • zdejmij ze stosu kolejny element (ozn. b),
      • odłóż na stos wartość b operator a.
  • Zdejmij ze stosu wynik.

ÅšWIAT 24/7
Schwytanie byłego przywódcy Serbów bośniackich Radovana Karadzicia, podróż Baracka Obamy na Bliski Wschód i do Europy oraz Komisja Europejska, która grozi USA w sprawie wiz - to najważniejsze zagraniczne tematy, o których pisaliśmy w ostatnim tygodniu w tvn24.pl.
Karadżić zmieniał tożsamość i podróżował po Europie
Ukrywający się przez 13 lat były przywódca bośniackich Serbów Radovan Karadżić, co najmniej sześć razy zmienił tożsamość, bywał we Włoszech pod fałszywym nazwiskiem - pisze w sobotę "Corriere della Sera", powołując się na nieoficjalne doniesienia.
Iran masowo wzbogaca uran
Dziś posiadamy więcej niż 5 tysięcy wirówek (do wzbogacania uranu) - powiedział w sobotę prezydent Iranu Mahmud Ahmadineżad. W ten sposób Teheran rozwiał wątpliwości, co do postępów swojego programu nuklearnego.
McCain do Chin: Uwolnijcie tybetańskich więźniów
John McCain, kandydat Republikanów do Białego Domu, spotkał się w piątek z duchowym przywódcą Tybetańczyków XIV Dalajlamą, który odwiedził USA. Republikański kandydat na prezydenta wezwał władze w Pekinie, do zwolnienia tybetańskich więźniów.
Przewoził narkotyki, by zwrócić za bilet
Na siedem lat więzienia, w tym dwa w zawieszeniu, skazał dubliński sąd 26-letniego Polaka, który w sierpniu ubiegłego roku próbował przemycić narkotyki - pisze sobotni "The Irish Times". Skazany tłumaczył, że kazano mu w ten sposób "odpracować" bilet lotniczy.
Linki: Strona g³ówna