gitweb on Svarog
projekti pod git sistemom za održavanje verzija -- projects under
the git version control system
2 * Progam predstavlja primere podele liste na dve, samo premestanje pokazivaca,
3 * odnosno bez zauzimanja memorije za nove elemente.
5 public class ListePodela
{
7 static void testNaizmenicnoPrviParan() {
8 DeljivaLista l
= new DeljivaLista();
10 for (int i
= 0; i
< n
; i
++) {
13 System
.out
.println("originalna lista:");
14 System
.out
.println(l
);
16 System
.out
.println("nove liste:");
17 DeljivaLista l2
= l
.izdvojParne();
18 System
.out
.println(l
);
19 System
.out
.println(l2
);
22 static void testNaizmenicnoPrviNeParan() {
23 DeljivaLista l
= new DeljivaLista();
25 for (int i
= 0; i
< n
; i
++) {
28 System
.out
.println("originalna lista:");
29 System
.out
.println(l
);
31 System
.out
.println("nove liste:");
32 DeljivaLista l2
= l
.izdvojParne();
33 System
.out
.println(l
);
34 System
.out
.println(l2
);
37 static void testSviParni() {
38 DeljivaLista l
= new DeljivaLista();
40 for (int i
= 0; i
< n
; i
++) {
43 System
.out
.println("originalna lista:");
44 System
.out
.println(l
);
46 System
.out
.println("nove liste:");
47 DeljivaLista l2
= l
.izdvojParne();
48 System
.out
.println(l
);
49 System
.out
.println(l2
);
52 static void testSviNeparni() {
53 DeljivaLista l
= new DeljivaLista();
55 for (int i
= 0; i
< n
; i
++) {
58 System
.out
.println("originalna lista:");
59 System
.out
.println(l
);
61 System
.out
.println("nove liste:");
62 DeljivaLista l2
= l
.izdvojParne();
63 System
.out
.println(l
);
64 System
.out
.println(l2
);
67 static void testUzastopniParni() {
68 DeljivaLista l
= new DeljivaLista();
71 for (int i
= 0; i
< n
; i
++) {
78 System
.out
.println("originalna lista:");
79 System
.out
.println(l
);
81 System
.out
.println("nove liste:");
82 DeljivaLista l2
= l
.izdvojParne();
83 System
.out
.println(l
);
84 System
.out
.println(l2
);
87 static void testPrvihN1() {
88 DeljivaLista l
= new DeljivaLista();
90 for (int i
= 0; i
< n
; i
++) {
94 System
.out
.println("originalna lista:");
95 System
.out
.println(l
);
97 System
.out
.println("nove liste:");
98 DeljivaLista l2
= l
.izdvojPrvihN(1);
99 System
.out
.println(l
);
100 System
.out
.println(l2
);
103 static void testPrvihN0() {
104 DeljivaLista l
= new DeljivaLista();
106 for (int i
= 0; i
< n
; i
++) {
110 System
.out
.println("originalna lista:");
111 System
.out
.println(l
);
113 System
.out
.println("nove liste:");
114 DeljivaLista l2
= l
.izdvojPrvihN(0);
115 System
.out
.println(l
);
116 System
.out
.println(l2
);
119 static void testPrvihN3() {
120 DeljivaLista l
= new DeljivaLista();
122 for (int i
= 0; i
< n
; i
++) {
126 System
.out
.println("originalna lista:");
127 System
.out
.println(l
);
129 System
.out
.println("nove liste:");
130 DeljivaLista l2
= l
.izdvojPrvihN(3);
131 System
.out
.println(l
);
132 System
.out
.println(l2
);
135 static void testPrvihNN() {
136 DeljivaLista l
= new DeljivaLista();
138 for (int i
= 0; i
< n
; i
++) {
142 System
.out
.println("originalna lista:");
143 System
.out
.println(l
);
145 System
.out
.println("nove liste:");
146 DeljivaLista l2
= l
.izdvojPrvihN(n
);
147 System
.out
.println(l
);
148 System
.out
.println(l2
);
151 static void testPrvihNN1() {
152 DeljivaLista l
= new DeljivaLista();
154 for (int i
= 0; i
< n
; i
++) {
158 System
.out
.println("originalna lista:");
159 System
.out
.println(l
);
161 System
.out
.println("nove liste:");
162 DeljivaLista l2
= l
.izdvojPrvihN(n
+1);
163 System
.out
.println(l
);
164 System
.out
.println(l2
);
167 static void testPrvihN2N() {
168 DeljivaLista l
= new DeljivaLista();
170 for (int i
= 0; i
< n
; i
++) {
174 System
.out
.println("originalna lista:");
175 System
.out
.println(l
);
177 System
.out
.println("nove liste:");
178 DeljivaLista l2
= l
.izdvojPrvihN(2*n
);
179 System
.out
.println(l
);
180 System
.out
.println(l2
);
183 public static void main(String
[] args
) {
184 testNaizmenicnoPrviParan();
185 System
.out
.println();
186 testNaizmenicnoPrviNeParan();
187 System
.out
.println();
189 System
.out
.println();
191 System
.out
.println();
192 testUzastopniParni();
193 System
.out
.println();
194 System
.out
.println("Izdvajanje prvih 0:");
196 System
.out
.println("Izdvajanje prvih 1:");
198 System
.out
.println("Izdvajanje prvih 3:");
200 System
.out
.println("Izdvajanje prvih N:");
202 System
.out
.println("Izdvajanje prvih N+1:");
204 System
.out
.println("Izdvajanje prvih 2*N:");
211 * Lista brojeva koja omogucava da se iz nje izdvoji nova lista u kojoj se
212 * nalaze samo parni brojevi.
220 public Element(int br
) {
225 public String
toString() {
233 public DeljivaLista() {
237 public void dodaj(int br
) {
238 Element novi
= new Element(br
);
243 public String
toString() {
244 String rez
= "DeljivaLista: [ ";
245 Element tekuci
= prvi
;
246 while (tekuci
!= null) {
247 rez
+= tekuci
.info
+ " ";
248 tekuci
= tekuci
.veza
;
255 * Metod pravi novu listu koja se sastoji od izdvojenih parnih elemenata ove
256 * liste, pri cemu se ne zauzima nova memorija. Nakon poziva ovog metoda
257 * lista na kojoj je pozvan se sastoji samo od neparnih elemenata.
259 * @return lista parnih elemenata ove liste
261 public DeljivaLista
izdvojParne() {
262 // buduci rezultat operacije
263 DeljivaLista parni
= new DeljivaLista();
265 // da bi dodavali na kraj mozemo imati lokalnu
266 // promenljivu koja pamti gde je kraj
267 Element parniKraj
= null;
271 while (prvi
!= null && prvi
.info
% 2 == 0) {
274 if (parni
.prvi
== null) {
279 parniKraj
.veza
= tek
;
287 while (tek
.veza
!= null) {
290 if (tek
.info
% 2 == 0) {
291 pret
.veza
= tek
.veza
;
292 if (parni
.prvi
== null) {
297 parniKraj
.veza
= tek
;
310 * Vraca novu listu koja se sastoji od prvih `n` elemenata
311 * ove liste, a ova lista se nakon poziva sastoji od ostatka.
312 * U slucaju da je `n` nepozitivan broj bice vracena prazna lista,
313 * a u slucaju da je `n` vece ili jednako broju elemenata u listi
314 * nova lista ce se sastojati od cele ove liste, a ova ce ostati
317 public DeljivaLista
izdvojPrvihN(int n
) {
318 DeljivaLista rezultat
= new DeljivaLista();
323 rezultat
.prvi
= prvi
;
326 Element poslednji
= prvi
;
327 while (poslednji
!= null && brojac
< n
- 1) {
328 poslednji
= poslednji
.veza
;
331 if (poslednji
!= null) {
332 prvi
= poslednji
.veza
;
333 poslednji
.veza
= null;
Svarog.pmf.uns.ac.rs/gitweb
maintanance
Doni Pracner