Laboratorium 9

Transkrypt

Laboratorium 9
Nazwa przedmiotu: Algorytmy i złoŜoność (Laboratorium)
Prowadzący zajęcia: mgr inŜ. Przemysław Pardel
Laboratorium 9
LP
Zakres materiału
7.
Czas
realizacji
Abstrakcyjne struktury danych i ich implementacje: stosy kolejki, listy, drzewa,
grafy, słowniki, haszowanie, kolejki priorytetowe, drzewa poszukiwań binarnych.
9
Czas realizacji zadań: 3 godziny
Teoria:
Stos
Struktura nazywana stosem (ang. Stack) posiada ustalony element nazywany
wierzchołkiem, który jest jedynym dostępnym w danej chwili jej składnikiem. 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)
•
•
Dowolna operacja usuwania ze stosu może dotyczyć tylko jego aktualnego wierzchołka.
Dodanie nowego elementu do stosu jest możliwe tylko przez umieszczenie tego elementu
na „szczycie” stosu, tak aby stał się on nowym wierzchołkiem.
Fizyczną ilustracja stosu moŜe być pewna liczba talerzy poukładanych jeden na drugim. Przy
dodawaniu kolejnego talerza najbardziej rozsądnym postępowaniem jest umieszczenie go na samej
górze. W przypadku pobierania talerza, zdejmujemy ten, który znajduje się na szczycie, tj. został
połoŜony jako ostatni.
Operację umieszczania na stosie nazywa się PUSH, a operację zdejmowania ze stosu POP.
Stos
Jako struktury reprezentującej stos w pamięci moŜna uŜyć tablicy jednowymiarowej S[1..n]. Dla
tablicy określamy atrybut top[S] podający numer (indeks) elementu ostatnio umieszczonego na
stosie. Stos składa się zatem z elementów S[0], S[1], … , S[top[S]], gdzie S[0] oznacza
element na dnie stosu, a S[top[S]] jest elementem wierzchołku stosu. Jeśli top[S] < 0 to stos
jest pusty i próba pobrania elementu z takiego stosu spowoduje komunikat o błędzie „niedomiaru”.
Stos został wymyślony i opracowany przez niemieckiego naukowca informatyka Friedricha L. Baura
w 1955 a opatentowany w 1957. Za ten wynalazek Friedrich L. Bauer, dostał w 1988 od IEEE
nagrodę Computer Society Pioneer Award.
Zadania do realizacji:
1. Zaimplementować stos z wykorzystaniem tablicy jednowymiarowej. Umożliwić
użytkownikowi umieszczanie na stosie zadanej liczby elementów i zdejmowanie elementów
ze stosu (wypisać wartości elementów umieszczonych na stosie podczas zdejmowania
kolejnych elementów ze stosu).
2. Zaimplementować stos z wykorzystaniem Stack biblioteki Java (import java.util.Stack), z
wykorzystaniem podstawowych operacji.
• Stworzyć obiekt stosu (Stack())
• boolean empty() – sprawdza czy stos jest pusty (true jeśli tak)
• Object peek() – umożliwia podglądania obiektu z wierzchołka stosu bez jego
usuwania
• Object pop()
• Object push(Object item)
• int search(Object o) – zwraca indeks pierwszego znalezionego elementu (najbliższego
wierzchołka stosu). W przypadku nie znalezienia elementu zwraca -1.
Umożliwić użytkownikowi umieszczanie na stosie zadanej liczby elementów i zdejmowanie
elementów ze stosu (wypisać wartości elementów umieszczonych na stosie podczas
zdejmowania kolejnych elementów ze stosu).
Bibliografia:
1. Świder K.: Algorytmy i struktury danych
2. Wikipedia, Wolna encyklopedia, http://www.wikipedia.pl

Podobne dokumenty