Push(3,&S) 3 1 S Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom.

Similar documents
Uputa: Zabranjeno je koristiti bilo kakva pomagala. Rje²enja pi²ete desno od zadatka. Predajete samo ovaj list.

Učitati cio broj n i štampati njegovu recipročnu vrijednost. Ako je učitan broj 0, štampati 1/0.

Programiranje Programski jezik C. Sadržaj. Datoteke. prof.dr.sc. Ivo Ipšić 2009/2010

VRIJEDNOSTI ATRIBUTA

Najjednostavnija izvedba stoga

2. Linijska algoritamska struktura

namespace spojneice { public partial class Form1 : Form { public Form1() { InitializeComponent(); }

CSS CSS. selector { property: value; } 3/20/2018. CSS: Cascading Style Sheets

VHDLPrimeri Poglavlje5.doc

Zadatci Small Basic za 7. Razred ( programa)

Uvod u programiranje - vežbe. Kontrola toka izvršavanja programa

/*#include <iostream> // Prvi zadatak sa integralnomg ispita

Binarne hrpe. Strukture podataka i algoritmi VJEŽBE 26. siječnja / 133

Osnove programskog jezika C# Čas 5. Delegati, događaji i interfejsi

modifier returnvaluetype methodname(list of parameters) { // Method body; }

24/03/2018. Deklaracija promenljivih. Inicijalizacija promenljivih. Deklaracija i inicijalizacija promenljivih

Računarske osnove Interneta (SI3ROI, IR4ROI)

pojedinačnom elementu niza se pristupa imeniza[indeks] indeks od 0 do n-1

UNIVERZITET U BEOGRADU ELEKTROTEHNIČKI FAKULTET

b) program deljiv3; uses wincrt; var i:integer; begin i:=3; while i<100 do begin write(i:5); i:=i+3; end; end.

Općenita lista. ,, a n. Lista je konačni ni niz (od nula ili više) podataka istog tipa: (a 1. , a 2

Numeričke metode i praktikum

Uvod u relacione baze podataka

Nizovi. Programiranje 1

Programiranje III razred

Naredbe za kontrolu toka

Informatika Uvod u C#,.NET Framework i Visual Studio... nastavak...

Izrada VI laboratorijske vježbe

PARALELNO PROGRAMIRANJE

NIZOVI.

Vežbe - XII nedelja PHP Doc

Stack. 4. In Stack all Operations such as Insertion and Deletion are permitted at only one end. Size of the Stack 6. Maximum Value of Stack Top 5

VDSL modem Zyxel VMG1312-B10A/B30A

EL E E L M E EN E T N I PRO R GR G A R M A SKO K G G JEZ E I Z KA A C# C PROF DR SAŠA BOŠNJAK

x y = z Zadaci - procedure

... ; ako je a n parno. ; ako je a n neparno

Programske paradigme Funkcionalna paradigma

VB komande. Programiranje 1

for i:=2 to n do if glasovi[i]>max then begin max:=glasovi[i]; k:=i {*promenljiva k ce cuvati indeks takmicara sa najvise glasova *} end;

Programiranje 1 Programski jezik C 2. čas. Mirko Spasić

PREDMET. Osnove Java Programiranja. Čas JAVADOC

Scheme je funkcionalni jezik moderna varijanta jezika LISP-a, s dodacima iz Algola (lokalni doseg identifikatora).

ARDUINO KROZ JEDNOSTAVNE PRIMJERE - pripreme za natjecanja -

Programiranje kroz aplikacije. Kontrola toka programa Nizovi

Primjer ispisuje rečenicu "Dobro dosli na brzi tecaj C-a" na ekranu

Uputstvo za podešavanje mail klijenta

PROGRAMIRANJE. Amir Hajdar

Univerzitet u Nišu Građevinsko-arhitektonski fakultet. 4. Ciklična algoritamska struktura 5. Jednodimenzionalno polje.

Veliki računski zadaci mogu se razbiti u manje delove i time se omogućava ljudima da iskoriste ono što su neki drugi već uradili, umesto da počinju

JavaScript i HTML DOM

Type 'demo()' for some demos, 'help()' for on-line help, or 'help.start()' for an HTML browser interface to help. Type 'q()' to quit R.

Osnove programskog jezika C# Čas 4. Nasledjivanje 2. deo

Informacioni sistemi i baze podataka

Programiranje III razred

Dežurni nastavnik: Kolokvijum traje 1.5 sat, prvih sat vremena nije dozvoljeno napuštanje kolokvijuma. Upotreba literature nije dozvoljena.

Algoritmi i strukture podataka

Sadržaj predavanja 02. Cjelobrojni tip podataka(1/3) Cjelobrojni tip podataka(2/3) Cjelobrojni tip podataka(3/3) prec(short) prec(int) prec(long) int

Prva recenica. Druga recenica.

var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ListBox1.Items.LoadFromFile('d:\brojevi.

Uputstvo za korišćenje logrotate funkcije

Uvod u programski jezik

String. String. Kreiranje string objekta pomoću string literala (konstanti) Kreiranje string objekta

(Ureñeno. eñeno) ) stablo. r je njihov roditelj. Lista: linearno ureñivanje podataka Stablo: hijerarhijsko ureñivanje podataka (podreñeni

I PISMENI ZADATAK III6 I GRUPA IME I PREZIME

Operacijski sustavi. Laboratorijska vježba 2. Petra Lončar, mag. ing. el., asistent FESB, 2016.

SELECT CASE i FOR NEXT. Programiranje 1

UPUTSTVO ZA KORIŠĆENJE NOVOG SPINTER WEBMAIL-a

Linear Data Structure

Sberbank Business Online na Mozilla FireFox

Rekurzivne metode. Posmatrajmo rekurzivan metod kojim u objektu listbox1 klase ListBox upisujemo sve prirodne brojeve od 1 do datog n.

NAPREDNE STRUKTURE PODATAKA

Data Structures Week #3. Stacks

For. 1) program ispis; {ispisuje brojeve od 1 do 5 jedan ispod drugog} uses wincrt; var s,i:integer; begin for i:=1 to 5do writeln(i); end.

Shell programiranje. Damir Kirasić Škola otvorenog računarstva FER Zagreb

Lekcija 02 Uslovni iskazi i petlje, Funkcije. Miljan Milošević

Događaj koji se javlja u toku izvršenja programa i kvari normalno izvršenje. Kada se desi izuzetak, sistem pokušava da pronađe način da ga obradi.

The Stack ADT. Stacks. The Stack ADT. The Stack ADT. Set of objects in which the location an item is inserted and deleted is prespecified.

Ispit traje 3 sata. Nije dozvoljeno korišćenje literature Prvih sat vremena nije dozvoljeno napuštati ispit.

Microsoft Hyper-V Server 2016 radionica EDU IT Pro, Zagreb,

Zadaci za Tutorijal 2.

CS 171: Introduction to Computer Science II. Stacks. Li Xiong

Z1. Dati RDF graf predstavljen u JSON-LD sintaksi potrebno je grafički predstaviti u skladu sa RDF notacijom. (5 poena)

Objektno orjentirano programiranje

VEŽBA 5 do while petlja, switch case

Mašinska vizija. Dr Nenad Jovičić tnt.etf.rs/~mv

PRIJEMNI ISPIT IZ INFORMATIKE

Binarno stablo traženja

Internet Banking User Guide Individual Clients v 1.6 Internet Banking User Guide Individual Clients 1 Login to Internet Banking 2 Virtual Desktop 3

Backup i Restore C particije ili Windowsa sa NORTON-om

ABSTRACT DATA TYPES (ADTS) COMP1927 Computing 2 16x1 Sedgewick Chapter 4

Sveučilište u Zagrebu PMF Matematički odsjek. Mreže računala. Vježbe 08. Zvonimir Bujanović Slaven Kožić Vinko Petričević

CJENOVNIK OGLAŠAVANJA ZA ROTIRAJUĆE BANNERE NA NASLOVNICI

Variable Neighborhood Descent - VND (Metoda promenljivog spusta)

Stacks and Queues. CSE Data Structures April 12, 2002

JAVA PROGRAMIRANJE 1

Data Structures & Algorithm Analysis. Lecturer: Souad Alonazi

Jezik Baze Podataka SQL. Jennifer Widom

Solution for Data Structure

operativni sistem part 2

15. Stacks and Queues

Transcription:

tog (tack) tog je posebna vrsta liste: od svih operacija dozvoljeno je ubacivanje, brisanje i gledanje sadržaja elementa samo na jednom kraju liste koji zovemo vrh stoga. tog zovemo i lifo last in first out. a n. a 2 a 1 a 0 a.t.p. tack vrh stoga elementtype... bilo koji tip tack... konačan niz podataka tipa elementtype tmakenull(&)... pretvara u prazan stog tempty()... vraća 1 ako je prazan, 0 ako nije tpush(x,&)... ubacuje element x na vrh stoga tpop(&)... uklanja element s vrha stoga; nije definirano ako je prazan ttop()... vraća element koji je na vrhu stoga (ne uklanja ga); nije definirano ako je prazan Primjer. Push(1,&) 1 Push(2,&) 2 1 Pop(&) 1 Push(3,&) 3 1 Uvijek trebamo paziti da ne zovemo Pop nad praznim stogom. Upotreba. vaki poziv funkcije u programskim jezicima stavlja povratnu adresu i parametre na stog. tog nam omogućava simulaciju rekurzivnog programa nerekurzivnim. Primjer. Izvrednjavanje postfix aritmetičkih izraza. infix operand1 operator operand2 postfix operand1 operand2 operator Primjer evaluacije na stogu: 2 3 + 5 6 * - 5 5 6 * - 5 30 - -25 Zadatak 5. Opišite evaluaciju postfix izraza na stogu. Prikažite sve korake na primjeru izračunavanja izraza (A/(B^C))*D+E (prebacite ga prvo u postfix oblik). Rješenje. postfix oblik izraza je: A B C ^ / D * E +. Algoritam za evaluaciju postfix izraza: za svaki znak ch postfix izraza redom { ako je ch operand, stavi ch na stog; inace { uzmi broj s vrha stoga i spremi ga u b2 (ako je stog prazan, javi gresku); uzmi broj s vrha stoga i spremi ga u b1 (ako je stog prazan, javi gresku); izvrsi operaciju ch nad b1 i b2; rezultat stavi na stog; uzmi broj s vrha stoga, to je rezultat;

lijed operacija i vrijednosti na stogu u svakom koraku: Napomena. Kako automatizirati prevodenje infix oblika u postfix oblik? Dijkstrinim algoritmom. Uočimo probleme: prioritet operatora (npr. infix 1+2*3 nije postfix 12+3* već 123*+) i zagrade (no one se lako rješavaju rekurzivno). Prioriteti operatora su: najveći prioritet ima, zatim idu / i najmanji prioritet imaju +. DIJKTRIN ALGORITAM Ulaz: izraz u infix obliku. Algoritam: za svaki znak ch infix izraza { ako je ch broj, ispisi ga; ako je ch operator { sve dok stog nije prazan i operator na vrhu ima veci ili jednak prioritet od ch ispisi i ukloni operator na vrhu stoga; stavi ch na stog; ako je ch == (, stavi ch na stog; ako je ch == ) { ispisuj i uklanjaj sve operatore s vrha stoga sve dok ne naidjes na ( ; ( samo ukloni; ispisuj i uklanjaj sve operatore s vrha stoga dok se on ne isprazni; (Elegantnije: ako na početku stavimo izraz u zagrade, zadnja linija neće biti potrebna.) Dakle, na stog uvijek stavljamo točno one operatore koji imaju veći prioritet od operatora na stogu. Zadatak 6. Dijkstrinim algoritmom prebacite A+B*C+(D+E)*F u postfix. Rješenje.

postfix: ABC*+DE+F*+ Zadatak 7. Problem Hanojskih tornjeva glasi ovako: Dana su tri štapa A, B i C. Na štap A nanizano je n diskova različitih promjera. Potrebno je prebaciti sve diskove sa štapa A na štap C koristeći se štapom B kao pomoćnim. Odjednom je moguće prebaciti samo jedan disk i ne smije se stavljati veći disk na manji. Napišite rekurzivni program koji rješava ovaj problem. Rješenje. void Hanoi(int n, char pocetni, char pomocni, char zavrsni) { if (n == 1) { move(pocetni, zavrsni); Hanoi(n-1, pocetni, zavrsni, pomocni); move(pocetni, zavrsni); Hanoi(n-1, pomocni, pocetni, zavrsni);

Zadatak 8. Napišite nerekurzivnu verziju funkcije Hanoi. Rješenje. Rekurzivne pozive simuliramo pomoću stoga (neovisno o implementaciji). Potrebno je na stog spremiti trenutni opis situacije (n, koji štap je početni, koji pomoćni,...), potrebno je i znati u kojoj smo fazi (time simuliramo adresu instrukcije na koju se vraćamo nakon funkcijskog poziva). typedef struct { int n, faza; char poc, pom, zav; elementtype; void Hanoitack(int n, char poc, char pom, char zav) { elementtype x; tack ; tmakenull(&); f1: if (n == 1) { move(poc, zav); goto f5; f2: //spremamo trenutnu situaciju na stog x.n = n; x.poc = poc; x.pom = pom; x.zav = zav; x.faza = 3; tpush(x, &); //pripremimo parametre n = x.n - 1; poc = x.poc; pom = x.zav; zav = x.pom; //simuliramo poziv funkcije s novim parametrima goto f1; f3: move(poc, zav); f4: //spremamo trenutnu situaciju na stog x.n = n; x.poc = poc; x.pom = pom; x.zav = zav; x.faza = 5; tpush(x, &); //pripremimo parametre n = x.n - 1; poc = x.pom; pom = x.poc; zav = x.zav; //simuliramo poziv funkcije s novim parametrima goto f1; f5: if tempty() else { //gotovi smo s jednim pozivom, treba se vratiti na nivo iznad //uzimamo stanje nivoa sa stoga x = ttop(); tpop(&); n = x.n; poc = x.poc; pom = x.pom; zav = x.zav; //vracamo se na sljedecu naredbu u tom nivou switch (x.faza) { case 3: goto f3; break; case 5: goto f5; break;

Zadatak za DZ Razradite implementaciju stoga pomoću pointera. Napišite sve potrebne definicije tipova i potprograme za operacije. L A TEX-irala: Martina tojić martina.stojic@gmail.com http://web.math.hr/~stojic 2014., listopad 2015.