LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

30
1 BAB 3 TUMPUKAN ATAU STACK A. PEMBAHASAN Praktikum kali ini kita membahas tentang tumpukan atau stack dimana semua penyisipan dan penghapusan data dilakukan hanya melalui satu pintu yang disebut top (puncak) stack. Tumpukan dapat dikatakan sebagai struktur data yang bersifat LIFO (Last In First Out). Metode/fungsi yang terpenting adalah push dan pop. Berikut ini program yang dikerjakan pada praktikum ketiga : \\ Program class Program_Tumpukan{ static int atas = -1; nilai variabel atas yaitu -1. static int batasAtas = 9; batas maksimal pengisian tumpukan, batasnya yaitu 9, sehingga jumlah data yang bisa masuk ada 10 data. public static void push (String tumpukan[],String data){ method push yang digunakan untuk mengisi tumpukan. if (atas >=batasAtas) System.out.println("Maaf, tumpukan penuh"); → jika atas lebih dari atau sama dengan batas atas bernilai benarmaka keterangan “maaf, tumpukan penuh” akan ditampilkan. else{ System.out.println("PUSH:"+data); → jika tumpukan masih kosong atau belum penuh maka data dapat dimasukkan. atas=atas+1;→ atas = atas + 1 -1 = -1 + 1 = 0 tumpukan [atas ] =data; } }→ atas = 0, tumpukan[0] = data. public static String pop (String tumpukan [] ){ ini merupakan method pop yang digunakan untuk mengambil tumpukan. String hasilPop=""; if(atas <0) hasilPop = "Maaf,tumpukan kosong";→ jika atas kurang dari 0 bernilai benar, maka keterangan “maaf , tumpukan kosong” akan keluar.

description

semoga membantu :)

Transcript of LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

Page 1: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

1

BAB 3

TUMPUKAN ATAU STACK

A. PEMBAHASAN

Praktikum kali ini kita membahas tentang tumpukan atau stack dimana semua

penyisipan dan penghapusan data dilakukan hanya melalui satu pintu yang disebut top

(puncak) stack. Tumpukan dapat dikatakan sebagai struktur data yang bersifat LIFO

(Last In First Out). Metode/fungsi yang terpenting adalah push dan pop.

Berikut ini program yang dikerjakan pada praktikum ketiga :

\\ Program

class Program_Tumpukan{

static int atas = -1; → nilai variabel atas yaitu -1.

static int batasAtas = 9; → batas maksimal pengisian tumpukan, batasnya yaitu 9,

sehingga jumlah data yang bisa masuk ada 10 data.

public static void push (String tumpukan[],String data){ → method push yang

digunakan untuk mengisi tumpukan.

if (atas >=batasAtas)

System.out.println("Maaf, tumpukan penuh"); → jika atas lebih dari atau

sama dengan batas atas bernilai „benar‟ maka keterangan “maaf, tumpukan penuh”

akan ditampilkan.

else{

System.out.println("PUSH:"+data); → jika tumpukan masih kosong atau

belum penuh maka data dapat dimasukkan.

atas=atas+1;→ atas = atas + 1

-1 = -1 + 1 = 0

tumpukan [atas ] =data; } }→ atas = 0, tumpukan[0] = data.

public static String pop (String tumpukan [] ){ → ini merupakan method pop yang

digunakan untuk mengambil tumpukan.

String hasilPop="";

if(atas <0)

hasilPop = "Maaf,tumpukan kosong";→ jika atas kurang dari 0 bernilai

„benar‟, maka keterangan “maaf , tumpukan kosong” akan keluar.

Page 2: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

2

else{ → jika salah, atau atas lebih dari atau sama dengan 0. Maka variabel hasilPop

akan dikembalikan nilainya.

hasilPop = tumpukan[atas]; → baris ini merupakan varibel hasilPop adalah

tumpukan[atas], atas merupakan indeks ke-0.

tumpukan[atas]=null; → atas adalah null.

atas--;} → artinya yaitu yang tadinya atas adalah indeks ke-0 maka setelah

dikurang 1(--) maka atas akan kembali menjadi -1.

return (hasilPop); } → sintaks ini digunakan untuk mengembalikan nilai

hasilPop.

public static void bacaTumpukan (String tumpukan[]){ → digunakan untuk

membaca kondisi tumpukan.

System.out.println("KONDISI TUMPUKAN:"); → baris ini digunakan untuk

menampilkan keterangan “KONDISI TUMPUKAN”.

for (int i=atas;i>=0; i--) → arti dari perulangan disamping yaitu variabel i =atas,

perulangan akan dikerjakan jika i lebih dari atau sama dengan indeks 0. Perulangan

akan dikerjakan terus menerus sampai i kurang dari 0.

{ if (i==atas)

System.out.println(i+"."+tumpukan[i]+" atas"); → jika pernyataan i sama dengan

atas bernilai „benar‟, maka tampilan berikut akan dikeluarkan, tumpukan[i]

digunakan untuk memanggil tumpukan indeks yang ke-I, jika i merupakan atas maka

akan terdapat keterangan atas.

else

System.out.println(i+"."+tumpukan[i]); } } → jika salah maka yang keluar adalah

indeks ke-i digabung dengan memanggil tumpukan indeks ke-i.

public static void main (String args[]){ → merupakan method main.

String tumpukan[]=new String [9];→ batas maksimum tumpukan yaitu 9

tumpukan.

push (tumpukan, "Buku A");→ pengisian tumpukan Buku A, akan diproses dalam

method push.

Isi dari method push yaitu seperti berikut :

if (atas >=batasAtas) →-1>=9 (salah)

else{

Page 3: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

3

System.out.println("PUSH:"+data); → push :+data.

atas=atas+1; →atas = atas+1

-1 = -1+1

-1 = 0 (salah)

tumpukan [atas ] =data; → Tumpukan[0] = Buku A

push (tumpukan, "Buku B");→ sintaks yang digunakan untuk memasukkan

tumpukan Buku B, sintaks ini memanggil method push, isi method push :

if (atas >=batasAtas) → 0>=9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

atas=atas+1; → atas = atas+1

0 = 0+1

0 = 1 (salah)

tumpukan [atas ] =data; → Tumpukan[1] = Buku B

push (tumpukan, "Buku C"); → sintaks yang digunakan untuk memasukkan

tumpukan Buku C, sintaks ini memanggil method push, isi method push akan

diproses. Isi dari method push yaitu seperti berikut :

if (atas >=batasAtas) → 1>=9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

atas=atas+1; → atas = atas+1

1 = 1+1

1 = 2 (salah)

tumpukan [atas ] =data; → Tumpukan[2] = Buku C

push (tumpukan, "Buku D");→ sintaks yang digunakan untuk memasukkan

tumpukan indeks 3 yaitu Buku D, sintaks ini memanggil method push, yang berada

didalam method push akan diproses. Isi dari method push yaitu seperti berikut :

if (atas >=batasAtas) → 2>=9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

atas=atas+1; → atas = atas+1

Page 4: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

4

2 = 2+1

2 = 3 (salah)

tumpukan [atas ] =data; → Tumpukan[3] = Buku D

System.out.println("");→ digunakan untuk menampilkan spasi 1 baris.

bacaTumpukan(tumpukan);→ sintaks yang digunakan untuk menampilkan method

bacaTumpukan, di dalam method bacaTumpukan yaitu :

System.out.println("KONDISI TUMPUKAN:");→ digunakan untuk menampilkan

keterangan “KONDISI TUMPUKAN”.

for (int i=atas;i>=0; i--)→ baris ini melakukan perulangan. i = atas, atas = 3, maka i =

3. 3>=0 (benar).

if (i==atas) → i= 3 (benar)

System.out.println(i+"."+tumpukan[i]+" atas");

Didalam method membaca tumpukan :

i=atas, atas = 3

i=3

tumpukan [3] = Buku D (atas)

else

System.out.println(i+"."+tumpukan[i]);

(i--)→ i = 2

2>=0 (benar)

tumpukan [2] = Buku C

(i--)→ i = 1

1>=0 (benar)

tumpukan [1] = Buku B

(i--) → i = 0

0>=0 (benar)

tumpukan [0] = Buku A

(i--)→ i = -1

-1>=0 (salah) → perulangan selesai

Keterangan :

Buku yang dipush dalam tumpukan yaitu Buku A, B, C, dan D. atas terdapat pada

posisi Buku D karena buku terdapat pada posisi paling atas.

Page 5: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

5

Ditambahkan perintah berikut :

push (tumpukan, "Buku E");→ kemudian ditambah lagi tumpukan Buku E,

kemudian method push dproses isi dari method push :

if (atas >=batasAtas) → 3>=9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

Atas = atas+1;→atas = atas+1

3 = 3+1

3 = 4 (salah)

tumpukan [atas ] =data; → Tumpukan[4] = Buku E

push (tumpukan, "Buku F"); → kemudian ditambah lagi tumpukan Buku F,

kemudian method push dproses isi dari method push :

if (atas >=batasAtas) → 4 >= 9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

Atas = atas+1;→atas = atas+1

4 = 4+1

4 = 5 (salah)

tumpukan [atas ] =data; → Tumpukan[5] = Buku F.

push (tumpukan, "Buku G");→ kemudian ditambah lagi tumpukan Buku G,

kemudian method push dproses isi dari method push :

if (atas >=batasAtas) → 5>=9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

atas=atas+1;→atas = atas+1

5 = 5+1

5 = 6 (salah)

tumpukan [atas ] =data; → Tumpukan[6] = Buku G

System.out.println("");→ digunkan untuk menampilkan spasi 1 baris.

Page 6: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

6

bacaTumpukan(tumpukan);→ digunakan untuk membaca tumpukan. Didalam

method bacaTumpukan yaitu :

System.out.println("KONDISI TUMPUKAN:");→ digunakan untuk menampilkan

keterangan “KONDISI TUMPUKAN”.

for (int i=atas;i>=0; i--)→ baris ini melakukan perulangan. i= atas, atas = 6, maka i =

6. 6>=0 (benar).

if (i==atas) → i=6

System.out.println(i+"."+tumpukan[i]+" atas");

Didalam method membaca tumpukan :

i=atas

atas =6

i=6

tumpukan [6] = Buku G (atas)

else

System.out.println(i+"."+tumpukan[i]);

(i--)→ i = 5

5>=0 (benar)

tumpukan [5] = Buku F

(i--)→ i = 4

4>=0 (benar)

tumpukan [4] = Buku E

(i--) → i = 3

3>=0 (benar)

tumpukan [3] = Buku D

(i--) → i = 2

2>=0 (benar)

tumpukan [2] = Buku C

(i--) → i = 1

1>=0 (benar)

tumpukan [1] = Buku B

(i--) → i = 0

0>=0 (benar)

tumpukan [0] = Buku A

(i--)→ i = -1

Page 7: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

7

-1>=0 (salah) → perulangan selesai

push (tumpukan, "Buku H");→ ditambah tumpukan Buku H, kemudian method

push diproses, isi dari method push yaitu :

if (atas >=batasAtas) → 6 >=9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

atas=atas+1;→atas = atas+1

6 = 6+1

6 = 7 (salah)

tumpukan [atas ] =data; → Tumpukan[7] = Buku H

push (tumpukan, "Buku I");→ ditambah tumpukan Buku I, kemudian method push

diproses, isi dari method push yaitu :

if (atas >=batasAtas) → 7>=9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

atas=atas+1;→atas = atas+1

7 = 7+1

7 = 8 (salah)

tumpukan [atas ] =data; → Tumpukan[8] = Buku H

push (tumpukan, "Buku J");→ ditambah tumpukan Buku J, kemudian method push

diproses, isi dari method push yaitu :

if (atas >=batasAtas) → 8 >=9 (salah)

else{

System.out.println("PUSH:"+data); → akan tampil keterangan push : +data.

atas=atas+1;→atas = atas+1

8 = 8+1

8 = 9 (salah)

tumpukan [atas ] =data; → Tumpukan[9] = Buku J

Page 8: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

8

push (tumpukan, "Buku K");→ ditambah tumpukan Buku K, kemudian method

push diproses, isi dari method push yaitu :

if (atas >=batasAtas) → 9>=9 (benar)

System.out.println("Maaf, tumpukan penuh");→ karena pernyataan

atas>=batasAtas benar maka keterangan “Maaf, tumpukan penuh” akan ditampilkan.

push (tumpukan, "Buku L");→ ditambah tumpukan Buku L, kemudian method

push diproses, isi dari method push yaitu :

if (atas >=batasAtas) → 10>=9 (benar)

System.out.println("Maaf, tumpukan penuh");→ karena pernyataan

atas>=batasAtas benar maka keterangan “Maaf, tumpukan penuh” akan ditampilkan.

System.out.println("");→ digunakan untuk menampilkan spasi 1 baris.

bacaTumpukan(tumpukan);→ digunakan untuk membaca tumpukan. Didalam

method bacaTumpukan yaitu :

System.out.println("KONDISI TUMPUKAN:");→ digunakan untuk menampilkan

keterangan “KONDISI TUMPUKAN”.

for (int i=atas;i>=0; i--)→ baris ini melakukan perulangan. i= atas, atas = 10, maka i

= 10. 10>=0 (benar). Karena batas tumpukan adalah 9, sedangkan Buku K dan Buku

L posisinya melebihi batas tumpukan sehingga terdapat keterangan “Maaf, tumpukan

penuh”.

if (i==atas) → i=9

System.out.println(i+"."+tumpukan[i]+" atas");

Didalam method membaca tumpukan :

i=atas

atas =9

i=9

tumpukan [9] = Buku J (atas)

else

System.out.println(i+"."+tumpukan[i]);

(i--)→ i = 8

8>=0 (benar)

tumpukan [8] = Buku I

(i--)→ i = 7

7>=0 (benar)

Page 9: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

9

tumpukan [7] = Buku H

(i--) → i = 6

6>=0 (benar)

tumpukan [6] = Buku G

(i--) → i = 5

5>=0 (benar)

tumpukan [5] = Buku F

(i--) → i = 4

4>=0 (benar)

tumpukan [4] = Buku E

(i--) → i = 3

3>=0 (benar)

tumpukan [3] = Buku D

(i--) → i = 2

2>=0 (benar)

tumpukan [2] = Buku C

(i--) → i = 1

1>=0 (benar)

tumpukan [1] = Buku B

(i--) → i = 0

0>=0 (benar)

tumpukan [0] = Buku A

(i--)→ i = -1

-1>=0 (salah) → perulangan selesai.

Ditambahkan perintah berikut :

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 9< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini tidak dikerjakan.

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [9]

= Buku J

Page 10: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

10

tumpukan[atas]=null;→ tumpukan[9]=null

Buku J = null

atas--;→ 9--

atas = 8

bacaTumpukan(tumpukan); digunakan untuk membaca tumpukan. Didalam

method bacaTumpukan yaitu :

System.out.println("KONDISI TUMPUKAN:");→ digunakan untuk menampilkan

keterangan “KONDISI TUMPUKAN”.

for (int i=atas;i>=0; i--)→ baris ini melakukan perulangan. i= atas, atas = 8, maka i =

8. 8>=0 (benar). {

if (i==atas) → i=8 (benar)

System.out.println(i+"."+tumpukan[i]+" atas");

Didalam method membaca tumpukan :

i=atas

atas =8

i=8

tumpukan [8] = Buku I (atas)

else

System.out.println(i+"."+tumpukan[i]);

(i--)→ i = 7

7>=0 (benar)

tumpukan [7] = Buku H

(i--) → i = 6

6>=0 (benar)

tumpukan [6] = Buku G

(i--) → i = 5

5>=0 (benar)

tumpukan [5] = Buku F

(i--) → i = 4

4>=0 (benar)

tumpukan [4] = Buku E

(i--) → i = 3

3>=0 (benar)

tumpukan [3] = Buku D

Page 11: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

11

(i--) → i = 2

2>=0 (benar)

tumpukan [2] = Buku C

(i--) → i = 1

1>=0 (benar)

tumpukan [1] = Buku B

(i--) → i = 0

0>=0 (benar)

tumpukan [0] = Buku A

(i--)→ i = -1

-1>=0 (salah) → perulangan selesai.

Ditambahkan perintah berikut :

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 8< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ (tampilan ini tidak dikerjakan.)

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [8]

= Buku I

tumpukan[atas]=null;→ tumpukan[8]=null

Buku 9 = null

atas--;→ 8--

atas = 7

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 7< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ (tampilan ini tidak dikerjakan.)

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [7]

= Buku H

tumpukan[atas]=null;→ tumpukan[7]=null

Buku H = null

atas--;→ 7--

Page 12: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

12

atas = 6

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 6< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini tidak dikerjakan.

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [6]

= Buku G

tumpukan[atas]=null;→ tumpukan[6]=null

Buku J = null

atas--;→ 6--

atas = 5

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 5< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini tidak dikerjakan.

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [5]

= Buku F

tumpukan[atas]=null;→ tumpukan[5]=null

Buku F = null

atas--;→ 5--

atas = 4

bacaTumpukan(tumpukan);→ digunakan untuk membaca tumpukan. Didalam

method bacaTumpukan yaitu :

System.out.println("KONDISI TUMPUKAN:");→ digunakan untuk menampilkan

keterangan “KONDISI TUMPUKAN”.

for (int i=atas;i>=0; i--)→ baris ini melakukan perulangan. i= atas, atas = 4, maka i =

4. 4>=0 (benar). {

if (i==atas) → i=4 (benar)

System.out.println(i+"."+tumpukan[i]+" atas");

Didalam method membaca tumpukan :

i=atas

atas=4

Page 13: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

13

i=4

tumpukan [4] = Buku E (atas)

else

System.out.println(i+"."+tumpukan[i]);

(i--) → i = 3

3>=0 (benar)

tumpukan [3] = Buku D

(i--) → i = 2

2>=0 (benar)

tumpukan [2] = Buku C

(i--) → i = 1

1>=0 (benar)

tumpukan [1] = Buku B

(i--) → i = 0

0>=0 (benar)

tumpukan [0] = Buku A

(i--)→ i = -1

-1>=0 (salah) → perulangan selesai.

Ditambah perintah berikut :

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 4< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini tidak dikerjakan.

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [4]

= Buku E

tumpukan[atas]=null;→ tumpukan[4]=null

Buku E = null

atas--;→ 4--

atas = 3

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

Page 14: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

14

if(atas <0)→ 3< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini tidak dikerjakan.

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [3]

= Buku D

tumpukan[atas]=null;→ tumpukan[3]=null

Buku D = null

atas--;→ 3--

atas = 2

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 2< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini tidak dikerjakan.

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [2]

= Buku C

tumpukan[atas]=null;→ tumpukan[2]=null

Buku C = null

atas--;→ 2--

atas = 1

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 1< 0 (salah)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini tidak dikerjakan.

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [1]

= Buku B

tumpukan[atas]=null;→ tumpukan[1]=null

Buku B = null

atas--;→ 1--

atas = 0

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ 0< 0 (salah)

Page 15: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

15

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini tidak dikerjakan.

else{

hasilPop=tumpukan[atas];→hasilPop=tumpukan [0]

= Buku A

tumpukan[atas]=null;→ tumpukan[0]=null

Buku A = null

atas--;→ 0--

atas = -1

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ -1< 0 (benar)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini dikerjakan.

else{ → tidak dikerjakan

hasilPop=tumpukan[atas];

tumpukan[atas]=null;

atas--;

System.out.println("POP:"+pop(tumpukan));→ sintaks ini memanggil method

pop, isi method pop yaitu :

if(atas <0)→ -2< 0 (benar)

hasilPop = "Maaf,tumpukan kosong";→ tampilan ini dikerjakan.

else{ → tidak dikerjakan

hasilPop=tumpukan[atas];

tumpukan[atas]=null;

atas--;

bacaTumpukan(tumpukan);→ digunakan untuk membaca tumpukan. Didalam

method bacaTumpukan yaitu :

System.out.println("KONDISI TUMPUKAN:");→ digunakan untuk menampilkan

keterangan “KONDISI TUMPUKAN”.

for (int i=atas;i>=0; i--)→ baris ini melakukan perulangan. i= atas, atas = -2, maka i

= -2. -2>=0 (salah). {

if (i==atas) → perulangan tidak dikerjakan karena atas <0.

System.out.println(i+"."+tumpukan[i]+" atas");

else

System.out.println(i+"."+tumpukan[i]);

Page 16: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

16

B. TUGAS

import java.util.Scanner;

class Node{

int data;

Node berikut;

public Node (){}

public Node (int dt){

data=dt;

berikut = null;} }

class Tumpukan{

protected Node atas;

void create(){

atas =null; }

boolean isKosong(){

if(atas==null)

return true;

else

return false; }

void push(int item){

Node p;

p=new Node (item);

p.data=item;

p.berikut=atas;

atas=p; }

Node pop(){

Node temp =new Node();

if(!isKosong()){

temp=atas;

atas=atas.berikut; }

else

System.out.println("Tumpukan Kosong");

return temp; }

void bacaTumpukan(){

Page 17: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

17

Node p;

p=atas;

while(p!=null){

System.out.println(p.data);

p=p.berikut; } } }

public class Tugas{

public static void main(String args[]){

Tumpukan tumpukan=new Tumpukan();

Scanner masuk = new Scanner(System.in);

int i=1;

int batas, item;

System.out.print("Masukkan banyak tumpukan:");

batas = masuk.nextInt();

while (i<=batas){

System.out.print("Tumpukan ke-"+i+":");

item=masuk.nextInt();

i++;

tumpukan.push(item); }

tumpukan.bacaTumpukan();

System.out.println("Hasil ambil dari tumpukan="+tumpukan.pop().data);

tumpukan.bacaTumpukan();

System.out.println("Hasil ambil daritumpukan="+tumpukan.pop().data);

tumpukan.bacaTumpukan();

} } }

Hasil outputnya :

C. LISTING

Page 18: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

1

PERTEMUAN KE-4

ANTRIAN ATAU QUEUE

A. PEMBAHASAN

Praktikum kali ini kita membahas tentang antrian atau queue yang

didefinisikan sebagai sebuah jalur tunggu. Dalam aplikasi compputer, queue

didefinisikan sebagai sebuah list dimana semua penambahan elemen (addQueue)

dibuat di ujung belakang dan pennghapusan element list (deQueue) dilkaukan di

ujung depan. Bentuk tersebut disebut sebagai struktur data yang bersifat FIFO (First

In First Out).

Berikut ini program yang dikerjakan pada praktikum keempat :

//Program :

class Program_Antrian_Soal {

static int ekor = -1;→ nilai variable ekor.

static int maxEkor = 9;→ batas maksimal antrian.

public static void addQueue(String antrian [], String data) → method yang

digunakan untuk menambah antrian.

{

if (ekor >= maxEkor

System.out.println("Maaf antrian sudah penuh"); → jika nilai ekor lebih

besar atau sama dengan nilai maxEkor, maka pesan “Maaf antrian sudah penuh” aka

ditampilkan.

else{

System.out.println("addQueue: " + data); → digunakan untuk menambah

antrian.

ekor++;

antrian [ekor] = data; } }→ jika antrian belum penuh atau masih

kosong akan ditambah antriannya, antrian akan ditambah sampai batas maksimal

antrian.

public static String deQueue(String antrian[])→ method ini digunakan untuk

mengurangi antrian.

{

String hasil="";

Page 19: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

2

if(ekor < 0)

{

hasil=" Maaf antrian kosong"; } → jika antrian kosong maka

keterangan “Maaf, antrian kosong” akan ditampilkan. Antrian kosong jika ekor

kurang dari 0.

else

{

hasil=antrian[0]; → hasil merupakan indeks ke-0.

antrian [0]= null; → antrian indeks ke- 0 merupakan null.

for (int i=1; i<=ekor; i++){

antrian[i-1]=antrian[i]; → digunkan untuk menggeser antrian 1

langkah kedepan.

antrian[i]=null; →antrian indeks ke-I merupakan null.}

ekor--;}

return(hasil); → merupakan nilai kembalian hasil.}

public static void bacaAntrian(String antrian[])→ method bacaAntrian yang

digunakan untuk membaca antrian.{

System.out.println("KONDISI ANTRIAN : ");→ sintaks ini digunakan

untuk menampilkan keterangan Kondisi Antrian.

for (int i=0; i<=maxEkor; i++)→ perulangan dimulai dari 0, batas maksimal

antrian yaitu kurang dari sama dengan maxEkor. {

if(i==ekor)→ jika nilai i sama dengan ekor.

System.out.println((i+1) + "." + antrian[i] + " ekor");→ antrian yang

menempati posisi indeks ke-0 merupakan ekor dari antrian.

else

System.out.println((i+1) + "." + antrian[i]);

}

}

public static void main(String args[])→method main.

{

String antrian[]=new String[100];→ batas antrian.

addQueue(antrian, " Mobil A");→ menambah antrian, didalam method addQueue:

Page 20: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

3

if (ekor >= maxEkor) → antrian masih kosong, sehingga yang dikerjakan selanjutnya

adalah

else→ dikerjakan

System.out.println("addQueue: " + data); → data = Mobil A

ekor++; → ekor = -1

ekor++ =0

antrian [ekor] = data;→ antrian [0] = Mobil A

addQueue(antrian, " Mobil B"); →menambah antrian , didalam method addQueue :

if (ekor >= maxEkor)→ tidak dikerjakan, karena antrian masih ada yang kosong.

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil B.

ekor++;→ ekor = 0

ekor++ =0++ → 1

antrian [ekor] = data;→ antrian [1] = Mobil B

addQueue(antrian, " Mobil C");→ menambah antrian, didalam method addQueue:

if (ekor >= maxEkor)→ method tidak dikerjakan.

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil C

ekor++;→ ekor = 1

ekor++ =1++ →2

antrian [ekor] = data;→ antrian [2] = Mobil C

addQueue(antrian, " Mobil D");→ menambah antrian, didalam method addQueue:

if ekor >= maxEkor)→ method tidak dikerjakan.

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil D

ekor++;→ ekor = 2

ekor++ =2++ →3

antrian [ekor] = data;→ antrian [3] = Mobil D

addQueue(antrian, " Mobil E");→ menambah antrian, didalam method addQueue:

if (ekor >= maxEkor)→ method tidak dikerjakan.

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil E

ekor++;→ ekor = 3

Page 21: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

4

ekor++ =3++ → 4

antrian [ekor] = data;→ antrian [4] = Mobil E

addQueue(antrian, " Mobil F");→ menambah antrian, didalam method addQueue:

if (ekor >= maxEkor)→ method isFull tidak dikerjakan.

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil F

ekor++;→ ekor = 4

ekor++ = 4++→5

antrian [ekor] = data;→ antrian [5] = Mobil F

addQueue(antrian, " Mobil G");→ menambah antrian, didalam method addQueue:

if (ekor >= maxEkor)→ method isFull tidak dikerjakan.

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil G

ekor++;→ ekor = 5

ekor++ =5++ →6

antrian [ekor] = data;→ antrian [6] = Mobil G

addQueue(antrian, " Mobil H");→ menambah antrian, didalam method addQueue:

if (ekor >= maxEkor)→ method tidak dikerjakan.

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil H

ekor++;→ ekor = 6

ekor++ = 6++ → 7

antrian [ekor] = data;→ antrian [7] = Mobil H

addQueue(antrian, " Mobil I");→ menambah antrian, didalam method addQueue:

if (ekor >= maxEkor)→ method tidak dikerjakan, karena pernyataan salah.

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil I

ekor++;→ ekor = 7

ekor++ =7++ →8

antrian [ekor] = data;→ antrian [8] = Mobil I

addQueue(antrian, " Mobil J");→ menambah antrian, didalam method addQueue:

if (ekor >= maxEkor)→ method tidak dikerjakan, karena pernyataan salah.

Page 22: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

5

else→ dikerjakan

System.out.println("addQueue: " + data);→ data = Mobil J

ekor++;→ ekor = 8

ekor++ =8++ →9

antrian [ekor] = data;→ antrian [9] = Mobil J

addQueue(antrian, " Mobil K");→ menambah antrian, didalam method addQueue:

if (ekor >= maxEkor)→ method dikerjakan.

return (ekor>=maxEkor);→ ekor = 9, maxEkor = 9

9 >= 9 (benar)

System.out.println("Maaf, antrian sudah penuh");→ keterangan Maaf, antrian

sudah penuh ditampilkan.

bacaAntrian(antrian);→memanggil method bacaAntrian, didalam method

bacaAntrian :

System.out.println("KONDISI ANTRIAN : ");→ untuk menampilkan keterangan

“KONDISI ANTRIAN”.

for (int i=0; i<=ekor; i++)→ perulangan dilakukan i dimulai dari 0, perulangan

dilakukan sampai i kurang dari sama dengan ekor, i++. Jika I <=9 maka perulangan

selesai.

if(i==ekor)→ jika I sama dengan ekor, maka perulangan akan dilakukan seperti

berikut .

System.out.println((i+1) + "." + antrian[i] + " ekor");

→ i+1 = 9+1=10

Antrian[9]= Mobil J ekor → perulangan selesai

else→ jika i tidak sama dengan ekor maka antrian seperti berikut :

System.out.println((i+1) + "." + antrian[i]);

→i+1 : i = 0 + 1 = 1

Antrian [0] = Mobil A

→i++ = 1

i+1: i = 1 + 1 = 2

Antrian [1] = Mobil B

→ i++ = 2

i+1: i = 2 + 1 = 3

Antrian [2] = Mobil C

→i++ = 3

Page 23: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

6

i+1: i = 3 + 1 = 4

Antrian [3] = Mobil D

→ i++ = 4

i+1: i = 4 + 1 = 5

Antrian [4] = Mobil E

→ i++ = 5

i+1: i = 5 + 1 = 6

Antrian [5] = Mobil F

→ i++ = 6

i+1: i = 6 + 1 = 7

Antrian [6] = Mobil G

→ i++ = 7

i+1: i = 7 + 1 = 8

Antrian [7] = Mobil H

→ i++ = 8

i+1: i = 8 + 1 = 9

Antrian [8] = Mobil I

Ditambah perintah berikut :

System.out.println("deQueue:"+deQueue(antrian));→ sintaks ini melakukan

pengambilan antrian yang terjadi dalam method deQueue :

if(ekor < 0){→ ekor = 9 (tidak dikerjakan)

9<0(salah)

else{→dikerjakan.

hasil=antrian[0];→ antrian [0] = Mobil A, hasil = Mobil A

antrian[0]=null; → antrian [0] = null

Mobil A= null

for (int i=1;i<=ekor;i++){→ perulangan dikerjakan dimulai dari I = 1, batas

perulangan yaitu I <= ekor, ekor = 9.

antrian[i-1]=antrian[i];→ antrian[i-1] = antrian [1]

antrian [1-1] = antrian[1]

antrian [0] = antrian [1]

antrian[i]=null;→ antrian [1] = null

ekor--;→ 9--= 8

Page 24: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

7

return (hasil);→ hasil = Mobil A.

bacaAntrian(antrian); →memanggil method bacaAntrian, didalam method

bacaAntrian:

System.out.println("KONDISI ANTRIAN : ");→ untuk menampilkan keterangan

“KONDISI ANTRIAN”.

for (int i=0; i<=ekor; i++)→ perulangan dilakukan i dimulai dari 0, perulangan

dilakukan sampai i kurang dari sama dengan ekor, i++. Jika i <=8 maka perulangan

selesai.

if(i==ekor)→ jika I sama dengan ekor, maka perulangan akan dilakukan seperti

berikut .

System.out.println((i+1) + "." + antrian[i] + " ekor");

→ i+1 =8+1=9

Antrian[8]= Mobil J ekor → perulangan selesai

else→ jika i tidak sama dengan ekor maka antrian seperti berikut :

System.out.println((i+1) + "." + antrian[i]);

→i+1 : i = 0 + 1 = 1

Antrian [0] = Mobil B

→i++ = 1

i+1: i = 1 + 1 = 2

Antrian [1] = Mobil C

→ i++ = 2

i+1: i = 2 + 1 = 3

Antrian [2] = Mobil D

→i++ = 3

i+1: i = 3 + 1 = 4

Antrian [3] = Mobil E

→ i++ = 4

i+1: i = 4 + 1 = 5

Antrian [4] = Mobil F

→ i++ = 5

i+1: i = 5 + 1 = 6

Antrian [5] = Mobil G

→ i++ = 6

i+1: i = 6 + 1 = 7

Page 25: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

8

Antrian [6] = Mobil H

→ i++ = 7

i+1: i = 7 + 1 = 8

Antrian [7] = Mobil I

Setelah itu ditambahkan lagi proses deQueue sebanyak 4 kali berturut-turut. Proses

yang dilakukan sama dengan proses deQueue diatas.

System.out.println("deQueue:"+deQueue(antrian)); mobil B keluar

System.out.println("deQueue:"+deQueue(antrian)); mobil C keluar

System.out.println("deQueue:"+deQueue(antrian)); mobil D keluar

System.out.println("deQueue:"+deQueue(antrian)); mobil E keluar

bacaAntrian(antrian);

Ketika proses baca antrian akan dimunculkan kondisi antrian dengan ekor berada di

Mobil J antrian ke 4 (data ke-5). Mobil yang ter-deQueue adalah mobil B, mobil C,

mobil D, dan mobil E.

Kemudian dilakukan kembali proses deQueue sebanyak 7 kali berturut-turut. Proses

pertama hingga proses kelima berjalan seperti proses sebelumnya.

System.out.println("deQueue:"+deQueue(antrian)); mobil F keluar

System.out.println("deQueue:"+deQueue(antrian)); mobil G keluar

System.out.println("deQueue:"+deQueue(antrian)); mobil H keluar

System.out.println("deQueue:"+deQueue(antrian)); mobil I keluar

System.out.println("deQueue:"+deQueue(antrian)); mobil J keluar

System.out.println("deQueue:"+deQueue(antrian));

System.out.println("deQueue:"+deQueue(antrian));

bacaAntrian(antrian);

Proses ke-enam dan ke-tujuh akan menampilkan pesan “Maaf, antrian kosong” karena

nilai ekor kurang dari 0. Sehingga program menjalankan perintah :

if (ekor < 0 )

hasil = “Maaf, antrian kosong”;

Page 26: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

9

B. TUGAS

class Program_Antrian {

static int ekor = -1;

static int maxEkor = 14;

public static void addQueue (String antrian[], String data) {

if (ekor >= maxEkor) {

System.out.println("maaf, antrian penuh"); }

else {

System.out.println("addQueue: " +data);

ekor++;

antrian[ekor] = data;

}

}

public static String deQueue (String antrian[]) {

String hasil="";

if (ekor < 0) { //antrian kosong

hasil = "maaf, antrian kosong";

}

else {

hasil = antrian[0];

antrian[0] = null;

//menggeser antrian 1 langkah kedepan

for (int i=1; i<=ekor; i++) {

antrian[i-1] = antrian [i];

antrian [i] = null;

}

ekor--;

}

return (hasil);

}

public static void bacaAntrian (String antrian[]) {

System.out.println("KONDISI ANTRIAN : ");

for (int i=0; i<=maxEkor; i++) {

if (i == ekor)

System.out.println(i + ". " + antrian[i] + "

ekor");

else

System.out.println(i + ". " + antrian[i]);

}

}

Page 27: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

10

public static void main (String [] args) {

String antrian[] = new String [100];

addQueue (antrian, "Mobil A");

addQueue (antrian, "Mobil B");

addQueue (antrian, "Mobil C");

addQueue (antrian, "Mobil D");

addQueue (antrian, "Mobil E");

addQueue (antrian, "Mobil F");

addQueue (antrian, "Mobil G");

bacaAntrian(antrian);

System.out.println(" ");

addQueue (antrian, "Mobil H");

addQueue (antrian, "Mobil I");

addQueue (antrian, "Mobil J");

addQueue (antrian, "Mobil K");

addQueue (antrian, "Mobil L");

addQueue (antrian, "Mobil M");

addQueue (antrian, "Mobil N");

addQueue (antrian, "Mobil O");

addQueue (antrian, "Mobil P");

addQueue (antrian, "Mobil Q");

addQueue (antrian, "Mobil R");

addQueue (antrian, "Mobil S");

bacaAntrian(antrian);

System.out.println(" ");

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

bacaAntrian(antrian);

Page 28: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

11

System.out.println(" ");

addQueue (antrian, "Mobil T");

addQueue (antrian, "Mobil U");

addQueue (antrian, "Mobil V");

addQueue (antrian, "Mobil W");

addQueue (antrian, "Mobil X");

addQueue (antrian, "Mobil Y");

addQueue (antrian, "Mobil Z");

bacaAntrian(antrian);

System.out.println(" ");

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

System.out.println("deQueue: " +deQueue(antrian));

bacaAntrian(antrian);

System.out.println(" ");

}

}

Hasil output :

Page 29: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

12

Page 30: LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4

13

C. LISTING