asp rjeseni primjeri za medjuispit12015 2016

Upload: denis-vidalin

Post on 26-Feb-2018

235 views

Category:

Documents


0 download

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.