asp rjeseni primjeri za medjuispit12015 2016
TRANSCRIPT
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
1/20
1
RIJEENI PRIMJERI ZA PRVI MEUISPIT
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
2/20
2
ZADATAK
Ocjeni sloenost svakog od ova tri algoritma u veliko O() notaciji. Mogue solucije su:
0) 1) 2)
sum = 0
for (i=1..n) do
for (j=1..n) do
for (k=1..n) do
sum = sum + 1
left = 0
right = n-1
repeat
probe = (left + right)/2
if (key < a[probe])
right = probe - 1
else
left = probe + 1
until (key == a[probe] or (left >
right))
if (key == a[probe]) then
return probe
else
return -1
for (i=0..n-2) do
min = i
for (j=i+1..n-1) do
if (a[j] < a[min])
min = j
tmp = a[min]
a[min] = a[i]
a[i] = tmp
RJEENJE:
Obrazloenje: Zadatak 0) ima tri petlje do n. Zadatak 1) ima petlju repeat until ukojoj problem dijeli sa dva (binarno pojednostavljenje problema vodi k log sloenostipo bazi 2). Zadatak 2) ima dvije petlje po n.
ZADATAK:
Da li asimptotski (dakle izraz za lijevoj strani se asimptotski pribliava izrazu na
desnoj strani koji pokazuje red vrijednosti u veliko O() notaciji) vrijede sljedeetvrdnje (odgovori su true (istina) ili false (la).
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
3/20
3
0) 1) 2)
ln(n) = O(log(n)) log(n!) = O(log(n^n)) n^k = O(c^n)
RJEENJE:
ZADATAK :
to radi ova funkcija i koji je rezultat:
int fun( char *text, char znak ) {
if( *text == '\0' ) return 0;
if( *text == znak ) return 1+fun(text+1,znak);else return fun(text+1,znak);
}
ako je zadano char *text=abrakadabra; i char znak ='a';
RJEENJE: Rekurzivno u stringu broji znakove a i daje rezultat 5.
ZADATAK:
to ispisuje funkcija
void ispisi(Atom *glava ) {if( glava != NULL && glava->elem % 2) {
printf(" %d ", glava->elem);
ispisi(glava->sljed);
}
}
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
4/20
4
ako se u jednostruko povezanoj listi na koju pokazuje parametar glava nalaze
sljedei cijeli brojevi :
1 57 43 13 8 11 20 10 56 53
a) 1 57 43 13b) ne ispisuje nita
c) 1 57 43 13 8 11
d) 1 57 43 13 8 11 20 10 56 53
e) 1 57 43 13 11 53
RJEENJE: A) - Funkcija rekurzivno ispisuje elemente iz liste dok ne doe doparnog broja nakon ega izlazi iz if bloka i zavrava rad funkcije.
ZADATAK
Nacrtaj listu nakon dodavanja elementa s adresom 0x2000 u listu izmeu vora ai-1i vora ai te pravilno oznai sve adrese.
RJEENJE:
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
5/20
5
ZADATAK:
U povezanoj listi pokaziva na prvi vor je a) ________________ , a posljednji vorpokazuje na b) _________________
RJEENJE:a) Glava
b) Na NULL
ZADATAK
Zadano je stanje jednostruko povezane liste (sortirane u smjeru porasta) realizirane
pokazivaima:
Na adresi 00336B88 je -87 koji gleda na 00336B18
Na adresi 00336B18 je 5 koji gleda na 00336B50
Na adresi 00336B50 je 79 koji gleda na 00336BC0
Na adresi 00336BC0 je 93 koji gleda na 00000000
Napiikako e izgledati stanje nakon izbacivanja elementa 79 iz liste:
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
6/20
6
RJEENJE:
Kako element 79 pokazuje na adresu 00336BC0 na kojem je 93, a ispred elementa
79 je element 5 koji pokazuje na njega, izbacivanjem elementa 79 moramo
preusmjeriti pokazivanje elementa 5 na element 93, tj.
Na adresi 00336B88 je -87 koji gleda na 00336B18
Na adresi 00336B18 je 5 koji gleda na 00336BC0
Na adresi 00336BC0 je 93 koji gleda na 00000000
ZADATAK
Koja procedura pronalazi zadani element u jednostruko povezanoj listi?
a)Atom *ListSearch1(Atom *HeadPointer, ElementType Element) {
for(Atom *TempP = HeadPointer; TempP != NULL;TempP = TempP->Next) {
if(TempP->Element != Element) {returnTempP;
}}returnNULL;
}
b)Atom *ListSearch1(Atom *HeadPointer, ElementType Element) {
for(Atom *TempP = HeadPointer; TempP != NULL;TempP = TempP->Next) {
if(TempP->Element == Element) {returnTempP;
}}returnNULL;
}
c)
Atom *ListSearch1(Atom *HeadPointer, ElementType Element) {for(Atom TempP = HeadPointer; TempP != NULL;
TempP = TempP->Next) {if(TempP->Element == Element) {
returnTempP;
}}
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
7/20
7
returnNULL;}
d)
Atom *ListSearch1(Atom *HeadPointer, ElementType Element) {Atom *TempP;
if(TempP->Element == Element) {returnTempP;
}returnNULL;
}
RJEENJE:Odgovor b). Obrazloenje: U odgovoru a se ispituje da li je elementrazliit (!=) a treba pitati jeli jednak. U odgovoru c) u for petljiAtom TempP jeneispravno deklariran, a u odgovoru d) nema petlje za prolaz po listi.
ZADATAK
ZADATAK
Za listu realiziranu pokazivaem napii funkciju koja se zove IsEmptyList() kojae provjeriti da li je lista prazna i vratiti 1 ako je to tono ili vratiti 0 ako lista nijeprazna.
Struktura atoma ili voraliste je:
//osnovni element liste - atom listestructAtom {
ElementType Element;
structAtom *Next;};
a u programu koji poziva funkcijuIsEmptyList je lista deklarirana sa:
Atom *List = NULL;
RJEENJE:
Kako funkcija mora vratiti 1 (true) ili 0 (false) onda se povratni tip zadaje kao boolvarijabla. Funkcija u listi parametara ima dvostruki pokaziva na strukturu Atom iz
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
8/20
8
razloga to u pozivajuem programu je lista deklarirana kao pokaziva na strukturuAtom i kod poziva moramo dati adresu tog pokazivaa. Konano funkcija glasi:
boolIsEmptyList(Atom **HeadPointer) {if(*HeadPointer == NULL) returntrue;
returnfalse;
}
ZADATAK
Kako e izgledati dvostruko povezana lista nakon dodavanja novog voranovivorPtr unutar liste izmeu vorova 0x3080 i 0x2030.
RJEENJE:
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
9/20
9
ZADATAK:
Ispravna deklaracija dvostruko povezane liste u memoriji glasi:
a) struct s1 {
int mbr;
char ime_pr[50];
int spol;
long pret;
long sljed;
}
b) struct s1 {
int mbr;
char ime_pr[50];
int spol;
zapis *pret;
zapis *sljed;
}
c) struct s1 {
int mbr;
char ime_pr[50];
int spol;
struct s1 *sljed;
}
d) struct s1{
int mbr;
char ime_pr[50];
int spol;
} zapis1;
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
10/20
10
struct s2{
zapis1 element;
struct s2 *pred;
struct s2 *sljed;
};
e) struct s1 {
int mbr;
char ime_pr[50];
int spol;
long *pret;
long *sljed;
}
RJEENJE: Odgovor je pod D.
ZADATAK
Mogui zadaci su modifikacija zadane funkcije kako bi ista obavljala neku druguzadau. Sljedei zadatak to ilustrira.
Modificiraj sljedeu funkciju za ispis cijele Liste realizirane poljem tako da funkcijaispisuje od zadnjeg elementa liste do prvog elementa liste (obrnuti redoslijed).
voidPrintWholeList(List &list) {for(SizeType i = ListFirst(list); i < ListEnd(list);
++i) {
ElementType elt;if( ListRead(list, i, elt) ) {
cout
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
11/20
11
RJEENJE:
voidPrintWholeList(List &list) {for(SizeType i = ListEnd(list) -1; i >= ListFirst(list);
--i) {
ElementType elt;if( ListRead(list, i, elt) ) {
cout
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
12/20
12
char*pom;intvrh;vrh = -1; // prazan stog
pom=str; //kopiramo si string na pomoni i// dalje onda iz njega punimo stog
while(*pom) // prepisujemo na stog dok ima znakova (do \0 znaka){
// dodajemo na string uz ispitivanje da li ima mjesta na stoguif(dodaj(pom, stog, MAXSTOG, &vrh)==0) return0;pom++; // pomiemo se na sljedei znak u stringu
}
// sada prepisujemo sa stoga u na polazni string// prepisujemo dok vrh ne postane jednak -1 (prazan stog)while((vrh)>=0){
if(skini(&str[i++], stog, &vrh)==0) return0;}}
intmain () {charSTOG1[MAXSTOG];charSTRING[]="KIKLOP";
okreni_string(STRING, STOG1, MAXSTOG);printf("%s \n", STRING);
return0;}
ISPIS: POLKIK
ZADATAK
to ispisuje funkcijavoid ispisi( struct cvor *glava ) {
if( glava != NULL && glava->elem % 2) {
printf(" %d ", glava->elem);
ispisi(glava->sljed);
}
}
ako se u jednostruko povezanoj listi na koju pokazuje parametar glava nalaze
sljedei cijeli brojevi :
1 57 43 13 8 11 20 10 56 53
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
13/20
13
Rjeenje: A
a) 1 57 43 13
b) ne ispisuje nita
c) 1 57 43 13 8 11
d) 1 57 43 13 8 11 20 10 56 53
e) 1 57 43 13 11 53
ZADATAK
Kolikaje kompleksnost (izraena u O notaciji ) kod dodavanja
elementa u prioritetni red.
ODGOVOR: O(log n)
ZADATAK Zadan je prioritetni red kao gomila. Dodaj element 67 u zadani
prioritetni red. Nacrtaj svaki korak kod dodavanja i preureivanja reda.
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
14/20
14
ZADATAK
Zadan je niz brojeva 8 15 10 9 12 7 2 . Od navedenih podataka oblikuj MAX gomilu. Nacrtati
izgled stabla nakon svake zamjene dva elementa.
ODGOVOR:
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
15/20
15
ZADATAK
Zadan je prioritetni red kao gomila. Izbaci element s najveim prioritetom iz reda i ponovno sloi
prioritetni red. Nacrtaj svaki korak kod izbacivanja i preureivanja reda.
ODGOVOR:
ZADATAK
Za stog realiziran pokazivaem poznatu prototipovi funkcija za dodavanje (push) iskidanje (pop) sa stoga: boolStackPush(Stack &MyStack, int
NoviElement); i
bool StackPop(Stack &MyStack); Funkcija StackPushvraa
falseako nema mjesta na stogu, a funkcija StackPopvraa falseako je stog
prazan.
a) U glavnom programu main(),vrijednosti NoviElement = 1 do NoviElement
= 6 dodaj na stog, a zatim skini sa stoga tri vrijednosti. Vodi rauna o provjerida li je stog pun, odnosno prazan.
b) Napii koje e vrijednosti biti na stogu nakon dodavanja na stog , a koje
nakon skidanja sa stoga, pravilno oznaivikoja je vrijednost na vrhu.
19
4222135
23
47
39
26
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
16/20
16
//tip podataka koji koristi stogint ElementType;//stogstruct Atom {
int Element;Atom *Next;
};//stog je pokaziva na vrhtypedef Atom* Stack;intmain() {
Stack MyStack = NULL; // deklaracija stogaStackNew( MyStack ); // stvaranje novog stoga
// dopii ostatak koda
}
RJEENJE
int main() {int NoviElement, i;Stack MyStack = NULL; // deklaracija stogaStackNew( MyStack ); // stvaranje novog stoga
// dopii ostatak koda
for(NoviElement=1; NoviElemnt
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
17/20
17
ZADATAK
Zadano je binarno stablo. Ispii redoslijed vorova za inorder, postorder i preorder obilazak.Koji obilazak daje sortirani niz?
_______| 8 ||_______|
______/ \_________________/ \_______| 4 | | 10 ||_______| |_______|/ \ /
_______ / \_______ _______/| 2 | | 6 | | 9 ||_______| |_______| |_______|
RJEENJE:PRE: 8 4 2 6 10 9
IN: 2 4 6 8 9 10
POST: 2 6 4 9 10 8
Inoreder daje sortirani niz ako je binarno stablo ureeno po principu lijevo manjidesno vei.
Kakav je sadraj stoga nakon izvoenja funkcije funkcija, ako je stog prije poziva prazan?
Funkcije za operacije nad stogom skini i dodaj vraaju 1 ako su obavile traenu zadau, a 0
ako nisu, te imaju sljedee prototipe:int skini (int *stavka, int stog[], int *vrh)int dodaj (int stavka, int stog[], int n, int *vrh)
#include #define MAXSTOG 100void funkcija() {
int stog[MAXSTOG],pomStog[MAXSTOG];int i, vrh = -1, pomVrh = -1;while (skini(&i, stog, &vrh)) {
if (i>=0) dodaj(i, pomStog, MAXSTOG, &pomVrh);}while (skini(&i, pomStog, &pomVrh)) {
if (i
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
18/20
18
ZADATAK1. Koji indeks ima lijevo dijete od 2. vora prikazanog stabla? Indeksiranje ide od nula.
Odgovor: Drugi vor ima indeks 1. Lijevo dijete ima indeks 2*i+1 tj. 3.
ZADATAK
Operacije nad redom deavaju se na:a) Samo na frontub) Samo na krajuc) I na frontu i na krajud) Na bilo kojoj poziciji u redu
ZADATAK
Hrpa iji korijen sadri element s najmanjim kljuem (vrijednosti) zove se:a) min hrpab) max hrpac) kompletna hrpa
Rjeenje: B
7
4 9
1 2 63
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
19/20
19
d) binarna hrpa
ZADATAK
Kod implementacije hrpe poljem heapDelete operacija je sloenosti:a) O(1)
b) O(n)c) O(n2)d) O(log n)
ZADATAK
Zadnji vor linearno povezane liste:a) Ima vrijednost NULLb) Ima next pokaziva ija vrijednost je NULLc) Ima next pokaziva koji pokazuje na prvi vor liste.d) Ne moe uvati nikakav podatak.
ZADATAK Rekonstruirajte binarno stablo iji vorovi imaju imena zadana slovima, ako je poznato
da INORDER obilazak ispisuje vorove u redoslijedu GHIJLMPTUV, a PREORDER daje niz
MLIHGJVPUT. Nakon rekonstrukcije ispii i POSTORDER obilazak tog stabla.
Rjeenje:
PITANJA:
1. Definiraj BINARNO STABLO?
2. Definiraj potpuno binarno stablo?
3. Definiraj ureeno binarno stablo
-
7/25/2019 ASP Rjeseni Primjeri Za Medjuispit12015 2016
20/20
20
4. to je to hrpa (gomila)?5. Koje su glavne primjene hrpe?
6. Zato je binarna stabla bolje realizirati pomou pokazivaa nego pomou polja?
NAPOMENA: PROUITI DOBRO SVE LEKCIJE U POWERPOINTU, TE PRIMJEREPROGRAMA KOJI SU RAENI NA VJEBAMA.