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