gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under the git version control system 3 /**
4 * Primer razlicitih operacija nad listama. Program je predstavljen kao
5 * interaktivni meni radi boljeg ilustrovanja operacija i njihovog ucinka.
6 */
11 // inicijalizujemo listu
70 }
74 }
75 }
76 }
85 }
86 }
94 }
95 }
105 }
107 }
115 }
116 }
124 }
132 }
133 }
135 }
137 /**
138 * Povezana lista brojeva sa operacijama nad njom i brojace elemenata. Lista u
139 * svakom momentu moze da efikasno vrati broj elemenata u njoj.
140 */
144 Element veza;
149 }
153 }
154 }
156 // pokazivac na prvi element liste
157 Element prvi;
159 // interni brojac koji pomaze kod nekih operacija
162 /** Kreira praznu listu brojeva. */
166 }
168 /** vraca broj elemenata u listi */
171 }
173 /** Vraca da li je lista prazna */
176 }
182 brojElemenata++;
183 }
194 }
196 }
197 }
205 }
208 }
210 /**
211 * Vraca vrednost k-tog elementa. Prvi element liste je na mestu 0, drugi na
212 * mestu 1 i tako dalje. Ne postoje elementi na negativnim pozicijama. U
213 * slucaju nepostojeceg indeksa baca IndexOutOfBounds izuzetak.
214 *
215 * @throws IndexOutOfBoundsException
216 */
221 }
228 br++;
229 }
234 }
235 }
237 // alternativna verzija procedure koja bi radila ako nemamo brojElemenata
238 // kao polje
243 }
250 brojac++;
251 }
258 }
259 }
261 /** Vraca minimum liste. U slucaju prazne liste vratice maksimalni Integer. */
269 }
271 }
274 }
276 /** Vraca da li broj br postoji u listi. */
281 }
283 // ako smo dosli do kraja liste i nismo ga nasli
284 // tekuci ce biti jednako null
286 }
288 /**
289 * Dodaje broj 'br' na poziciju 'pos'. Ako je pozicija negativna, broj ce
290 * biti dodat na prvo mesto. Ako je pozicija veza od broja elemenata, broj
291 * ce biti dodat na poslednje mesto.
292 *
293 * @param br
294 * broj koji se dodaje u listu
295 * @param pos
296 * pozicija na koju se broj dodaje
297 */
301 // proverimo i popravimo pos po potrebi
306 }
308 // dodavanje na pocetak je jednostavno
312 brojElemenata++;
314 // inace nam treba prethodni element
319 brojac++;
320 }
323 brojElemenata++;
324 }
325 }
327 /**
328 * Izbacuje broj 'br' iz liste, naravno ako postoji i vraca da li je
329 * operacija uspesno obavljena.
330 */
332 // proverimo da li je prvi element
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 }