Ako bi netko znao pomoći kako se rješava ovakav tip zadatak:
Ako bi netko znao pomoći kako se rješava ovakav tip zadatak:
Red je struktura podataka u kojoj se element dodaje na kraj, odnosno skida s početka.
Od tebe se traži da napraviš strukturu koja imitira red. Najjednostavnija ideja je red imitirati pomoću niza. U svojoj strukturi Red, imati ćeš varijablu int podaci[] i dva indexa int pocetaki int kraj. pocetak pokazuje na prvi element u nizu, a krajna zadnji element.
Skica:
podaci[] = |1|2|3|4|5|_|_|....
pocetak= 0
kraj= 4
Funkcije
- initRed - Stvoris novi, prazni red. pocetak stavis na 0, kraj na -1.
- dodaj - Dodavanje elementa, PRVO kraj inkrementiras, i novi element stavis na podaci[kraj]
- skini - Skidanje elementa, treba pripaziti ako je niz prazan. Niz nije prazan ako je pocetak <= kraj. (Primijeti, kad inicijaliziras prazan red, ovo ne vrijedi). Ako niz nije prazan, element = podaci[pocetak] i pomaknes pocekat, pocetak++
Vjerojatno ces niz podaci[] postaviti na neku zadanu velicinu, i nazovi je max. Kad dodajes element u niz, provjeri je li niz pun, tj. je li kraj = max. U tom slučaju ne mozes dodati element, pa vratis 0. Ako ima mjesta, dodaj element na vec opisan nacin i vrati 1.
Za skidanje slično. Ako je niz prazan, nemas sta dodati pa vrati 0. Inace, na gore opisan nacin dodas element i vratis 1.
- izbaci - Index i ide od pocetak do kraj-1. Pitalica podaci[i] <= podaci[i+1]. Ako je, pomakni sve elemente od tog mjesta u lijevo. I na kraju smanji kraj za 1.
Npr:
5|4|7|8|9|.. kraj = 4
5|7|8|9|.. kraj = 3
Ovo je najprimitivnije rješenje, moze se stvar napraviti bolje, ali složenije. Vjerojatno ce ti biti dovoljno staviti max na 1000 i nikad neces doci do kraja niza.
*Dodavanjem i skidanjem elemenata, tvoj red "putuje" prema kraju niza, i eventualno ce red "izaci" iz granica niza. U složenijoj verziji bi trebalo provjeravati je li kraj izašao iz niza, tj jel veci od max. Taj problem se može riješiti cirkularnim nizom/redom. Kad dodemo do kraja niza, sljedeci index je opet pocetak. To se ostvari racunanjem modulo max. Ali mislin da je ovo gore opisano dovoljno :)