gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systembb9122ec0a658980a3ec41e87b99a8e60d6712cb
1 /**
2 * Primer razlicitih operacija nad listama. Program je predstavljen kao
3 * interaktivni meni radi boljeg ilustrovanja operacija i njihovog ucinka.
4 */
9 // inicijalizujemo listu
69 }
73 }
74 }
75 }
84 }
85 }
93 }
94 }
104 }
106 }
114 }
115 }
123 }
131 }
132 }
134 }
136 /**
137 * Povezana lista brojeva sa operacijama nad njom i brojace elemenata. Lista u
138 * svakom momentu moze da efikasno vrati broj elemenata u njoj.
139 */
143 Element veza;
148 }
152 }
153 }
155 // pokazivac na prvi element liste
156 Element prvi;
158 // interni brojac koji pomaze kod nekih operacija
161 /** Kreira praznu listu brojeva. */
165 }
167 /** vraca broj elemenata u listi */
170 }
172 /** Vraca da li je lista prazna */
175 }
181 brojElemenata++;
182 }
193 }
195 }
196 }
204 }
207 }
209 /**
210 * Vraca vrednost k-tog elementa. Prvi element liste je na mestu 0, drugi na
211 * mestu 1 i tako dalje. Ne postoje elementi na negativnim pozicijama. U
212 * slucaju nepostojeceg indeksa baca IndexOutOfBounds izuzetak.
213 *
214 * @throws IndexOutOfBoundsException
215 */
220 }
227 br++;
228 }
233 }
234 }
236 // alternativna verzija procedure koja bi radila ako nemamo brojElemenata
237 // kao polje
242 }
249 brojac++;
250 }
257 }
258 }
260 /** Vraca minimum liste. U slucaju prazne liste vratice maksimalni Integer. */
268 }
270 }
273 }
275 /** Vraca da li broj br postoji u listi. */
280 }
282 // ako smo dosli do kraja liste i nismo ga nasli
283 // tekuci ce biti jednako null
285 }
287 /**
288 * Dodaje broj 'br' na poziciju 'pos'. Ako je pozicija negativna, broj ce
289 * biti dodat na prvo mesto. Ako je pozicija veza od broja elemenata, broj
290 * ce biti dodat na poslednje mesto.
291 *
292 * @param br
293 * broj koji se dodaje u listu
294 * @param pos
295 * pozicija na koju se broj dodaje
296 */
300 // proverimo i popravimo pos po potrebi
305 }
307 // dodavanje na pocetak je jednostavno
311 brojElemenata++;
313 // inace nam treba prethodni element
318 brojac++;
319 }
322 brojElemenata++;
323 }
324 }
326 /**
327 * Izbacuje broj 'br' iz liste, naravno ako postoji i vraca da li je
328 * operacija uspesno obavljena.
329 */
331 // proverimo da li je prvi element
334 brojElemenata--;
337 /* trazimo u ostatku liste */
342 /*
343 * dok ne dodjemo do kraja liste ili ne nadjemo broj
344 */
347 }
349 /*
350 * znaci da nismo na kraju liste, odnosno da smo nasli broj,
351 * prevezemo listu oko elementa
352 */
354 brojElemenata--;
358 }
359 }
360 }
362 /**
363 * Izbacuje sve brojeve 'br' iz liste, naravno ako postoje i vraca koliko ih
364 * je bilo.
365 */
369 /* uklanjamo sa pocetka koliko je potrebno */
372 brojac++;
373 }
376 /* trazimo u ostatku liste */
380 /* idemo korak po korak do poslednjeg elementa liste */
384 /* prevezemo listu oko elementa */
386 brojac++;
387 /*
388 * vracamo se jedan korak da bi u novom krugu proverili i
389 * ovaj element
390 */
392 }
393 }
394 }
397 }
399 /**
400 * Izbacuje K-ti element iz liste. Vraca da li je uspesno izbacen. Ako je
401 * lista prekratka vratice false.
402 */
406 }
409 }
410 // da li izbacujemo prvog?
414 // brojimo do elementa pre onog koji izbacujemo
420 brojac++;
421 }
422 // prevezemo oko k
424 }
425 brojElemenata--;
427 }
429 }