You are on page 1of 1

Programiranje 2

Pokazivači i povezane liste


Zadatci
[1] Napišite program koristeći povezane lite: Unijeti N prirodnih brojeva, gdje N nije
unaprijed poznat niti se može ograničiti. Ispisati brojeve obrnutim redoslijedom.
a) Modificirajte prethodni zadatak tako da kod za unos elemenata prebacite u
zasebnu funkciju.
b) Modificirajte prethodni zadatak tako da se podaci u listu spremaju
redoslijedom kojim se unose. To znači da se novi čvor sprema na KRAJ liste.

[2] Napišite program koji korisniku nudi izbornik u kojem može odabrati želi li unijeti
element u listu, ispisati je ili brisati određeni element. Elementi se u listu dodaju na
odgovarajuću poziciju tako da je lista u svakom trenutku sortirana uzlazno.
Nadopunite izbornik još nekim mogućnostima (npr. ispis broja elemenata liste i sl.).
Svaku od ponuđenih opcija realizirati kao zasebnu funkciju.

[3] Napišite program koji u jednostruko povezanoj listi sadrži podatke o predmetima koji
se predaju na nekom fakultetu: šifru predmeta, naziv predmeta, broj sati predavanja
tjedno i broj sati vježbi tjedno. Lista je sortirana silazno prema šifri predmeta.
Napišite funkciju za unos novog predmeta tako da je lista sortirana. Funkcija treba
vratiti 1 ako je zapis uspješno dodan u listu, a 0 inače. Prototip funkcije treba biti:
int ubaci (cvor &glava, cvor *noviPredmet) 
Interakcija korisnika s programom odvija se sve dok on to želi. Nakon svakog unosa,
ispisuje se proširena lista.

[4] Napišite program koji u jednostruko povezanoj listi sadrži podatke o smještaju
studenata u studentske domove: matični broj studenta, poštanski broj mjesta
stanovanja i šifru studentskog doma. Lista je sortirana uzlazno prema šifri studenta.
Napišite funkciju koja će iz liste izbaciti sve studente koji nisu smješteni u studentski
dom (šifra studentskog doma je nula). Funkcija treba vratiti broj izbačenih studenata.
Unos podataka vrši se sve dok korisnik to želi.

[5] Napišite program koji u jednostruko povezanu listu sprema podatke o sudionicima
nagradne igre: redni broj, ime i prezime, adresu i poštanski broj mjesta stanovanja.
Lista nije sortirana. Napišite funkciju koja će iz zadane liste izvaditi svaki drugi član
(drugi, četvrti, šesti ...) i staviti ih u novu listu. Funkcija treba vratiti pokazivač na novu
listu tj. NULL ako zadana lista ima manje od dva člana. Funkcija treba imati prototip:
void diskriminacija (zapis *svi, zapis *&studenti, zapis
*&studentice);
Korisnik najprije unosi podatke, a potom se ispisuju obje liste.
[6] Napišite program koji u jednostruko povezanu nesortiranu listu sprema podatke o
studentima (ime i prezime i ocjena). Napišite funkciju filtriraj koja će iz zadane liste
sve čvorove koji sadrže studente čija je ocjena veća ili jednaka prosjeku ocjena svih
studenata u listi prebaciti (bez stvaranja novih čvorova) u novu jednostruko povezanu
listu. Funkcija treba vratiti pokazivač na glavu nove liste. Glava prije poziva funkcije
pokazuje na listu čvorova koji sadrže sljedeće ocjene: 5, 2, 4, 3, 4, 3, 2, 4, 5, 1.
Prosjek ocjena je 3,3 pa nakon poziva funkcije varijabla glava pokazuje na listu
čvorova koji sadrže sljedeće ocjene: 2, 3, 3, 2, 1. Funkcija vraća pokazivač na novu
listu koja sadrži čvorove sa sljedećim ocjenama: 5, 4, 4, 4, 5. Nakon unosa podataka
ispisuju se obje liste.
1

You might also like