Stigao sam sa ucenjem jave do Stek klase. Posto mi je malo pravila problem i nisam mogao da je shvatim, odlucio sam da sednem i da je citam kod iz knjige, objasnjenja i sve na netu da bih mogao da skontam kod koji mi je dat u knjizi. Pa bih molio vas malo iskusnije clanove da proverite kako sam ja ovo naucio, da budem siguran kad budem nastavljao dalje.
Ovako, evo ga kod iz knjjige.
// Ova klasa definise stek za 10 celobrojnih vrednosti.
class Stek{
int[] stk= new int[100];
int vrh;
// Inicijalizacija na vrh steka
Stek()
{
vrh=-1;
}
// Postavlja element na vrh steka
void push(int broj)
{
if(vrh==9)
{
System.out.println("Stek je popunjen");
}
else
{
stk[++vrh] = broj;
}
}
int pop()
{
if(vrh<0)
{
System.out.println("Stek je prazan");
return 0;
}
else
{
return stk[vrh--];
}
}
}
public class TestStek {
public static void main(String args[])
{
Stek mojStek1= new Stek();
Stek mojStek2= new Stek();
// stavlja nekoliko brojeva na stek
for(int i=0; i< 10; i++) mojStek1.push(i);
for(int i=10; i<20; i++) mojStek2.push(i);
// skida nekoliko brojeva sa steka
System.out.println("Stek mojStek1:");
for(int i=0;i<10;i++)
System.out.println(mojStek1.pop());
System.out.println("Stek mojStek2:");
for(int i=0; i<10; i++)
System.out.println(mojStek2.pop());
}
}
Ukratko u Stek klasi:
Ovako Stek je struktura u kojoj se podaci obradjuju po sledecoj semi: prvi objekat koji se postavi na stek posednji se skida sa steka.
Stekovima se upravlja pomocu dve operacije: push i pop. Kada zelimo da stavimo element na vrh stek koristimo push metodu, a kad
zelimo da skinemo tekuci element koji se nalazi na vrhu steka koristimo pop.
Ovako da pocnem. Objasnjavacu kod po kod kako sam ja shvatio. :)
class Stek{
int[] stk= new int[100];
int vrh;
Ovako. Imamo niz stk koji moze da sadrzi u sebi 100 elemnata i definisemo promenljivu vrh.
Stek()
{
vrh=-1;
}
Pravimo konstruktor za Klasu Stek koji dodeljuje vrednost promenljivoj vrh -1.
// Postavlja element na vrh steka
void push(int broj)
{
if(vrh==9)
{
System.out.println("Stek je popunjen");
}
else
{
stk[++vrh] = broj;
}
}
Stek mojStek1= new Stek();
Stek mojStek2= new Stek();
// stavlja nekoliko brojeva na stek
for(int i=0; i< 10; i++) mojStek1.push(i);
for(int i=10; i<20; i++) mojStek2.push(i);
Kada pozovemo ovu metodu push. ovaj deo void push(int broj) nasledjuje vrednosti promenljive i koja se dobija iz ove for petlje.
Znaci prvi put kada prodjemo petlju for promenljiva broj ima vrednost 0. Tu vrednost 0 stavljamo na prvo mesto tj nulto u klasi stek. Posto je vrh= -1; kada ga inkrementujemo u ovom nizu stk[++vrh] bice 0. Tako da je prvi(nulti) element niza jednak 0. Tako prodjemo petlju 10 puta.
I dobijamo vrednost za mojStek1:
0
1
2
..
9
A za mojStek2:
10
11
12
..
19
Ovo nece nigde biti ispisano jer u metodi push nemamo print za ispis.
int pop()
{
if(vrh<0)
{
System.out.println("Stek je prazan");
return 0;
}
else
{
return stk[vrh--];
}
}
// skida nekoliko brojeva sa steka
System.out.println("Stek mojStek1:");
for(int i=0;i<10;i++)
System.out.println(mojStek1.pop());
System.out.println("Stek mojStek2:");
for(int i=0; i<10; i++)
System.out.println(mojStek2.pop());
Ovaj deo metode prvo proverava da li je stek prazan.
Ako nije prazan vraca vrednost stk[vrh--]; // to je ustvari iscitava vrednosti elemnata iz niza od nazad posto najveceg ka najmanjem ?
i onda konacan rezultat ispada
Stek mojStek1:
0
1
2
3
4
5
6
7
8
9
Stek mojStek2:
19
18
17
16
15
14
13
12
11
10
Sada moje pitanje za vas. Da li sam dobro sve shvatio sto se tice ovog koda? I da li mora da se koristi ova metoda pop ? Da li moze nekako drugacije to da se uradi da se
izcitavaju elemnti iz niza od pozadi, po meni je to cela logika to sto se elementi iz niza ?
Nadam se da vam nece biti mrsko sve da procitate jer sam se bas potrudio detaljno sve da ispisem. Hvala unapred :)