gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control systemb655e7bb44385d0b92fb71c2265bf4f406638209
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
68 }
72 }
73 }
74 }
83 }
84 }
92 }
93 }
103 }
105 }
113 }
114 }
122 }
130 }
131 }
133 }
135 /**
136 * Povezana lista brojeva sa operacijama nad njom i brojace elemenata. Lista u
137 * svakom momentu moze da efikasno vrati broj elemenata u njoj.
138 */
142 Element veza;
147 }
151 }
152 }
154 // pokazivac na prvi element liste
155 Element prvi;
157 // interni brojac koji pomaze kod nekih operacija
160 /** Kreira praznu listu brojeva. */
164 }
166 /** vraca broj elemenata u listi */
169 }
171 /** Vraca da li je lista prazna */
174 }
180 brojElemenata++;
181 }
192 }
194 }
195 }
203 }
206 }
208 /**
209 * Vraca vrednost k-tog elementa. Prvi element liste je na mestu 0, drugi na
210 * mestu 1 i tako dalje. Ne postoje elementi na negativnim pozicijama. U
211 * slucaju nepostojeceg indeksa baca IndexOutOfBounds izuzetak.
212 *
213 * @throws IndexOutOfBoundsException
214 */
219 }
226 br++;
227 }
232 }
233 }
235 // alternativna verzija procedure koja bi radila ako nemamo brojElemenata
236 // kao polje
241 }
248 brojac++;
249 }
256 }
257 }
259 /** Vraca minimum liste. U slucaju prazne liste vratice maksimalni Integer. */
267 }
269 }
272 }
274 /** Vraca da li broj br postoji u listi. */
279 }
281 // ako smo dosli do kraja liste i nismo ga nasli
282 // tekuci ce biti jednako null
284 }
286 /**
287 * Dodaje broj 'br' na poziciju 'pos'. Ako je pozicija negativna, broj ce
288 * biti dodat na prvo mesto. Ako je pozicija veza od broja elemenata, broj
289 * ce biti dodat na poslednje mesto.
290 *
291 * @param br
292 * broj koji se dodaje u listu
293 * @param pos
294 * pozicija na koju se broj dodaje
295 */
299 // proverimo i popravimo pos po potrebi
304 }
306 // dodavanje na pocetak je jednostavno
310 brojElemenata++;
312 // inace nam treba prethodni element
317 brojac++;
318 }
321 brojElemenata++;
322 }
323 }
325 /**
326 * Izbacuje broj 'br' iz liste, naravno ako postoji i vraca da li je
327 * operacija uspesno obavljena.
328 */
330 // proverimo da li je prvi element
335 /* trazimo u ostatku liste */
340 /*
341 * dok ne dodjemo do kraja liste ili ne nadjemo broj
342 */
345 }
347 /*
348 * znaci da nismo na kraju liste, odnosno da smo nasli broj,
349 * prevezemo listu oko elementa
350 */
352 brojElemenata--;
356 }
357 }
358 }
360 /**
361 * Izbacuje sve brojeve 'br' iz liste, naravno ako postoje i vraca koliko ih
362 * je bilo.
363 */
367 /* uklanjamo sa pocetka koliko je potrebno */
370 brojac++;
371 }
374 /* trazimo u ostatku liste */
378 /* idemo korak po korak do poslednjeg elementa liste */
382 /* prevezemo listu oko elementa */
384 brojac++;
385 /*
386 * vracamo se jedan korak da bi u novom krugu proverili i
387 * ovaj element
388 */
390 }
391 }
392 }
395 }
397 /**
398 * Izbacuje K-ti element iz liste. Vraca da li je uspesno izbacen. Ako je
399 * lista prekratka vratice false.
400 */
404 }
407 }
408 // da li izbacujemo prvog?
412 // brojimo do elementa pre onog koji izbacujemo
418 brojac++;
419 }
420 // prevezemo oko k
422 }
423 brojElemenata--;
425 }
427 }