• Nie Znaleziono Wyników

OE FHCH=M=E= =>H=JHEK  EIJ= =@=« H @H E“I E?D=IE $111

N/A
N/A
Protected

Academic year: 2021

Share "OE FHCH=M=E= =>H=JHEK  EIJ= =@=« H @H E“I E?D=IE $111"

Copied!
1
0
0

Pełen tekst

(1)

J¦zyki programowania (laboratorium)  Lista zada« nr 2

dr Miªosz Michalski, 6.III.2020

1. Napisa¢ program wykorzystuj¡cy statycznie deklarowan¡ tablic¦ int S[n] jako stos. Mo»na wygodnie przyj¡¢, »e S[0] przechowuje wska¹nik na aktualny szczyt stosu. W szczególno±ci, gdy S[0]=0, stos jest pusty. Zaimplementowa¢ operacje push(S,x), pop(S) i peek(S). Pierwsza z nich dodaje element x do stosu, druga zdejmuje z niego wierzchni element, zwracaj¡c go jako swoj¡ warto±¢, x=pop(S), a trzecia zwraca warto±¢ wierzchniego elementu, pozostawiaj¡c go na stosie. Potrzebna jest równie» funkcja logiczna empty(S) zwracaj¡ca warto±¢ 1, gdy stos S jest pusty lub 0 w przeciwnym wypadku. Próba odwoªania si¦

do pustego stosu przez x=pop(S) lub x=peek(S) ma skutek nieokre±lony. Innymi sªowy, testowanie czy stos nie jest pusty le»y w gestii programisty.

2. Podobnie jak poprzednio, zaimplementowa¢ w tablicy Q[n] kolejk¦ jednokierunkow¡ z operacjami pushq(Q,x), popq(Q) i peekq(Q). Pierwsza z nich dodaje element x na koniec kolejki, a popq(Q) zdejmuje z niej pierw- szy element, peekq(Q) za± zwraca warto±¢ pierwszego elementu bez usuwania go z Q. Potrzebna jest tak»e funkcja logiczna emptyq(Q) o dziaªaniu opisanym wy»ej. Przemy±le¢ i zaproponowa¢ sposób przechowania wska¹ników na pocz¡tek i koniec kolejki w samej tablicy Q.

3. Wad¡ u»ycia statycznej tablicy w roli stosu lub kolejki jest jej ustalony od pocz¡tku rozmiar i co za tym idzie  mo»liwo±¢ jej przepeªnienia. W przypadku próby dodania kolejnego elementu do zapeªnionego stosu lub kolejki, funkcja push powinna zwraca¢ kod bª¦du informuj¡cy o tym, »e operacja nie powiodªa si¦. Dla kolejki nale»aªoby przewidzie¢ tak»e operacj¦ shift(Q) przemieszczania danych w tablicy w ni»sze adresy, gdy zajdzie taka konieczno±¢. Operacja shift powinna by¢ wewn¦trznym mechanizm implementacyjnym kolejki, niewidocznym dla u»ytkownika.

4. Wzorem poprzednich zada« zaimplementowa¢ w tablicy kompletn¡ obsªug¦ kolejki dwustronnej, w której mo»na dodawa¢ i usuwa¢ elementy w ka»dym z dwóch ko«ców. Podstawowe operacje to: pushq_front, pushq_end, popq_front, popq_end, peekq_front, peekq_end oraz funkcja logiczna emptyq. Dobre roz- wi¡zanie powinno zawiera¢ tak»e mechanizm shift, jak opisano wy»ej.

5. Zaimplementowa¢ cykliczny bufor (kolejk¦ cykliczn¡) w tablicy int C[n]. Nowe elementy dodawane s¡

zawsze na ko«cu tej kolejki, przy czym po zapisaniu ostatniego elementu w tablicy, kolejny zapis odbywa si¦

automatycznie (i niewidocznie dla u»ytkownika) od jej pocz¡tku. W przypadku przepeªnienia tablicy nowy element nadpisuje pocz¡tek kolejki, a wska¹nik na pocz¡tek przesuwa si¦ o jedn¡ pozycj¦. W ten sposób przy wyczerpaniu miejsca najstarsze elementy s¡ automatycznie nadpisywane przez nowe (nidgy nie dochodzi wi¦c do przepeªnienia tablicy). Operacje na kolejce cyklicznej to: pushc(C), popc(C), peekc(C), emptyc(C).

Zaproponowa¢ najwygodniejszy sposób przechowania wska¹ników na pocz¡tek i koniec cyklicznego bufora w samej tablicy C.

6. Kolejka priorytetowa to struktura danych, w której ka»dy element posiada dodatkowo priorytet typu int.

Dane do takiej kolejki dodawane s¡ w zwykªy sposób, natomiast operacje popq(P) i peekq(P) zwracaj¡

zawsze element kolejki o najwy»szym priorytecie lub najstarszy z nich, gdy jest ich kilka. Oprócz operacji pushq, popq, peekq i emptyq, mo»liwa jest tak»e zmiana priorytetu wskazanego elementu adjust(P,x,r) polegaj¡ca na odnalezieniu w P elementu x i zmiany jego priorytetu na warto±¢ r. Zaimplementowa¢ kolejk¦

priorytetow¡ z ww. operacjami w statycznej tablicy. Przewidzie¢ mo»liwo±¢ przepeªnienia tablicy i odpowied- nie mechanizmy na to reaguj¡ce.

711. Zaimplementowa¢ wszystkie ww. konstrukcje za pomoc¡ dynamicznie alokowanych struktur ze wska¹nikami.

1216. Powtórzy¢ zad. 711 wykorzystuj¡c wska¹niki na wska¹niki.

17. Uzupeªni¢ procedury obsªugi kolejek z zad. 811 o funkcj¦ lokalizuj¡c¡ element o zadanej warto±ci x, find(Q,x).

Zwraca ona wska¹nik na pierwszy licz¡c od pocz¡tku element Q o warto±ci x lub NULL, gdy x nie wyst¦puje w Q.

18. Korzystaj¡c z funkcji find z poprzedniego zadania, napisa¢ funkcje before(Q,x,y) oraz behind(Q,x,y), które wstawiaj¡ do Q nowy element o warto±ci y bezpo±rednio przed lub odp. za znalezionym elementem x.

Je±li x nie wyst¦puje w Q, y traa standardowo na koniec kolejki.

19,20. Powtórzy¢ zad. 17 i 18 z wykorzystaniem wska¹ników na wska¹niki.

2123. Zrealizowa¢ stos, kolejk¦ jedno- i dwustronn¡ z zada« 14 w dynamicznie alokowanej tablicy. Oprócz procedu- ry shift, rozwi¡zanie powinno zawiera¢ mechanizm automatycznej, niewidocznej dla u»ytkownika realokacji tablicy w przypadku jej przepeªnienia. Dobre rozwi¡zanie powinno przewidzie¢ równie» mo»liwo±¢ zmniejsze- nia tablicy, gdy wcze±niej alokowana jej cz¦±¢ przestaje by¢ potrzebna.

Cytaty

Powiązane dokumenty

This thesis presents a method for modeling and optimization of exploitation works in a multi-plant mining enterprise. This method can be used in the evaluation of design

Podkre±lmy wi¦c: podstawowy kurs analizy matematycznej to nie jest »adna specjalistyczna wiedza, która mo»e si¦ przy- da¢, ale nie musi.. To podstawowe poj¦cia i zwi¡zki

Szereg (12.5) ma wi¦c dodatnie wyrazy, i jest zbie»ny (czyli jest zbie»na caªka po lewej stronie (12.5)) dokªadnie wtedy, gdy jest ograniczony.. Oszacujmy jeszcze

Szereg (12.5) ma wi¦c dodatnie wyrazy, i jest zbie»ny (czyli jest zbie»na caªka po lewej stronie (12.5)) dokªadnie wtedy, gdy jest ograniczony.. Oszacujmy jeszcze

wa»ne narz¦dzie i dla matematyków i dla in»ynierów (tak»e dla informatyków :-)).. Sprz¦»enie jest odbiciem wzgl¦dem osi poziomej, a moduª oznacza euklidesow¡ odlegªo±¢

Warunek (i) mówi, »e A jest ograniczony od góry i s jest ograniczeniem od góry, a warunek (ii) mówi, »e »adna liczba mniejsza od s nie jest ogranicze- niem A od góry, czyli, »e

17. Na prostym odcinku torów dwa poci¡gi, jad¡ce ka»dy z pr¦dko±ci¡ 30km/h, zbli»aj¡ si¦ do siebie. Gdy odlegªo±¢ pomi¦dzy poci¡gami wynosi 1km, pszczoªa zaczyna lata¢ tam

Zajmiemy si¦ teraz problemem równania postaci (16), które jednak nie jest zupeªne.. Wów- czas mo»emy poszukiwa¢ takiego czynnika, który sprawi, »e po pomno»eniu przez niego