Lista zadań na zajęcia, semestr letni 2013/2014, zestaw V

Transkrypt

Lista zadań na zajęcia, semestr letni 2013/2014, zestaw V
Lista zadań na zajęcia, semestr letni 2013/2014, zestaw V
Dynamiczne struktury danych – cd.
Przemysław Krysztowiak, [email protected]
Zadanie 1. Zaproponuj pseudokody realizujące operacje na liście jednokierunkowej: wstawienie elementu
na początek, na koniec, znalezienie elementu, usunięcie elementu.
(a) Oszacuj złożoność czasową tych operacji.
Zadanie 2. Zaproponuj sposób realizacji stosu, kolejki oraz kolejki priorytetowej za pomocą listy jednokierunkowej.
Zadanie 3. Zakoduj algorytmem Huffmana następujący ciąg znaków: „ala ma kota kot ma alę” (uwzględniając spację jako dodatkowy znak).
Zadanie 4. Zakoduj algorytmem Huffmana następujący ciąg znaków:
„F(0)=0;F(1)=1;F(n)=F(n–1)+F(n–2)”
(uwzględniając znaki (, ), =, −,+,;).
Pseudokody za [T. Cormen et al., Introduction to algorithms]. C jest zbiorem znaków, każdy znak ma
częstotliwość występowania w tekście. Q jest kolejką priorytetową typu „min”.
HUFFMAN(C)
n := |C|;
Q := C;
for i := 1 to n − 1
utwórz nowy węzeł z;
z.left := x := ExtractMin(Q);
z.right := x := ExtractMin(Q);
z.czestotliwosc = x.czestotliwosc + y.czestotliwosc;
Insert(Q, z);
return ExtractMin(Q);
Zadanie domowe
1. Zaimplementuj stos w oparciu o tablicę.
STACK-EMPTY(S)
if top[S] = 0
then return TRUE
else return FALSE
PUSH(S, x)
top[S] := top[S] + 1
S[top[S]] := x
POP(S)
if STACK-EMPTY(S)
then error „przepełnienie”
else top[S] := top[S] - 1
return S[top[S] + 1]
2. Zaimplementuj kalkulator odwrotnej notacji polskiej (używając własnej implementacji stosu). Algorytm, przechodząc wyrażenie od lewej do prawej: jeśli napotyka liczbę, to wrzuca ją na stos; jeśli napotyka
działanie, to bierze dwie wartości ze stosu i wrzuca na stos wynik napotkanego działania na tych liczbach.
(Kolejne znaki wyrażenia, np. „3 3 +”, można czytać z klawiatury).
Wyrażam zgodę na drukowanie przez studentów i pracowników WMiI UMK treści zawartej w niniejszym pliku.

Podobne dokumenty