• Nie Znaleziono Wyników

Laboratorium 4 –ADT kolejki priorytetowej i realizacja za pomocą list wiązanych Cele: •

N/A
N/A
Protected

Academic year: 2021

Share "Laboratorium 4 –ADT kolejki priorytetowej i realizacja za pomocą list wiązanych Cele: •"

Copied!
1
0
0

Pełen tekst

(1)

Laboratorium 4 –ADT kolejki priorytetowej i realizacja za pomocą list wiązanych Cele:

• Zastosowanie struktur wiązanych, zwanych również dynamicznymi lub rekurencyjnymi strukturami danych do realizacji kolejki priorytetowej. Realizacja kolejki priorytetowej w postaci ADT za pomocą jednej z wybranych list: jednokierunkowej nieuporządkowanej, dwukierunkowej nieuporządkowanej lub uporządkowanej.

• Porównanie liczby elementarnych operacji czyli porównań, przypisań, operacji arytmetycznych, indeksowań, wyłuskań itd. dla dwóch realizacji kolejki priorytetowej: jednej wykonanej przez studenta, opartej na wybranej liście oraz np. wykonanej w oparciu o algorytmy stogowe (kol_p2.cpp).

• Zastosowanie parametrów funkcyjnych do tworzenia kolejki priorytetowej wg różnych atrybutów danych: nazwiska, wieku itd.

Proponowane zadania do wykonania:

Program 1. Należy wykonać program, w którym są następujące opcje:

1.1 Wybór kryterium wstawiania i usuwania danych typu strukturalnego Osoba z kolejki: wg nazwiska lub wg wieku itp.

1.2 Wstawianie do kolejki, zrealizowanej za pomocą wybranego typu listy, danych w prowadzanych z klawiatury.

1.3 Usuwanie największego elementu

1.4 Wyświetlanie danych z kolejki za pomocą funkcji przejścia przez kolejkę Dla_kazdego, 1.5 Wykonanie eksperymentu do oceny czasochłonności operacji na kolejce priorytetowej

15.1. Wybór rozkładu danych wstawianych do kolejki np. wybór rozkładu losowego przez wywołanie funkcji srand z ustalonym parametrem, lub wybór danych posortowanych przez przygotowanie danych w tablicy, posortowanych w sposób rosnący lub malejący wg wybranej składowej w opcji 1.1.

1.5.2. Wykonanie eksperymentu: wstawienie 1000 danych do kolejki priorytetowej zgodnie z wybranym rozkładem danych (funkcja random lub pobranie danych posortowanych z tablicy). Zliczenie operacji elementarnych (patrz Wyjaśnienia) 1.5.3. Usunięcie 1000 danych z kolejki priorytetowej, zliczając operacje elementarne za pomocą liczników, używanych

podczas wstawiania 1000 elementów w opcji 1.5.2.

1.5.4. Zapisanie w pliku wartości liczników elementarnych operacji

1.6 Prezentacja na ekranie liczby operacji zapisanych w pliku po wykonaniu eksperymentu z punktu 1.5. Zapamiętanie wyników liczenia operacji w pliku pozwoli porównać je z wynikami dla kolejki, budowanej na bazie jednego z drzew poszukiwań binarnych, tworzonej w laboratorium 5).

Uwaga: można wykorzystać kolejkę priorytetową wykonaną za pomocą listy jednokierunkowej (kol_p3.cpp), uzupełnionej o funkcje podane powyżej (ocena 4.0-4.5).

Wyjaśnienia:

• Funkcja Dla_kazdego (funkcja przechodząca przez wszystkie elementy listy o przekładowym nagłówku void Dla_kazdego(kolejka_p Kolejka_P, funkcja wykonaj), gdzie typ funkcja jest zdefiniowana jako typedef void (*funkcja)(dane) oraz typedef struct Osoba dane dla kolejki. Może ona np. wyświetlać dane umieszczone w elementach kolejki na ekranie (jeśli podstawiona funkcja pod parametr funkcyjny wykonaj typu funkcja potrafi wyświetlić na ekranie dane umieszczone w elementach kolejki lub zapisywać je w pliku (jeśli podstawiona funkcja pod parametr funkcyjny wykonaj typu funkcja potrafi zapisywać w pliku dane umieszczone w elementach kolejki).

void Dla_kazdego(kolejka_p& Kolejka_P, funkcja wykonaj) //w programie przykładowe wywołanie Dla_kazdego(Kolejka_P, Pokaz_dane) { // tutaj uzupełnić kod //nagłówek funkcji void Pokaz_dane(dane Dane)

while (lista != NULL) {

d = lista->Dane;

wykonaj(d);

//tutaj uzupełnij kod }

}

• Wyznaczenie liczby elementarnych operacji typu porównania, przypisania, wywołania funkcji, operacji arytmetycznych, wyłuskań (np. struktura->składowa oznacza sumę: wyłuskanie + wybór składowej za pomocą operatora . (*wskstruktura).składowa) występujących przy wstawianiu 1000 danych, zależnych od rozkładu wstawianych danych i przy usuwaniu wszystkich elementów z kolejki. Ważne są łączne liczby wykonanych operacji elementarnych występujących w kodzie funkcji do wstawiania i usuwania (np. suma operacji porównania przy dodawaniu i usuwaniu 1000 elementów).

• Wybór kryterium wstawiania i usuwania z kolejki można zrealizować za pomocą przypisania nazwy funkcji porównującej wybrany atrybut do parametru funkcyjnego przekazywanego do funkcji wstawiającej i usuwającej (tak jak w funkcji Dla_kazdego)

Program 2. Należy w programie tworzącym kolejkę priorytetową w pliku kol_p2.cpp dodać funkcje przedstawione w punkcie 1 i porównać w obu rozwiązaniach liczby operacji elementarnych. Przy liczeniu operacji elementarnych należy indeksowanie potraktować jako sumę operacji wyłuskania i arytmetycznej tab[i] → *(tab+i).

Uwaga: można wprowadzić zmiany w pisanych programach, jeśli zostaną zachowane cele laboratorium 4.

Cytaty

Powiązane dokumenty

Tak, wydaje im się absurdalne, że jeśli jeden bliźniak będzie poruszał się bardzo, bardzo szybko – poleci na przykład gdzieś daleko w kosmos – i potem wróci, to

5. Planeta Pluto wiruje wokół własnej osi i obraca się wokół Słonia – swojej najbliższej gwiazdy. c) Na planecie Pluto co siódmy rok

Film historyczny lat pięćdziesiątych – uwagi na temat estetyki i cech wyróżniających .... Kontekst historyczny, polityka historyczna ekipy Władysława

Definiuje on 128 znaków, wśród których znajdują się 33 niedrukowalne znaki sterujące, znak odstępu, 52 litery (wielkie i małe litery alfabetu angielskiego), 10 cyfr i 32

Nawet, jeżeli musi się nieraz działać na przekór zbiurokratyzowanemu, „obłożonemu papierkami” wymiarowi sprawiedliwości, i to zresztą nie jest nic nowego w kinie

przyszedł „Haracz szarego dnia” oraz „Godność” - film, którego akcja toczy się w gorących miesiącach istnienia „Solidarności”, w okresie coraz bardziej nasilającej

- okazuje się, że Makuszyński ani jego styl, ani jego humor, wcale się nie zestarzały, że w czterdzieści cztery lata po napisaniu „Szaleństw panny Ewy”

Zależało mi na podkreśleniu, w jaki sposób można budować przyszłość bazując na przeszłości - opowiada reżyser- ka. Projekcja filmu jest