LAPORAN PRAKTIKUM STRUKTUR DATA 3 dan 4
description
Transcript of 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.
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{
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
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.
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.
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
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
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)
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
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
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--
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
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 :
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)
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]);
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(){
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
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="";
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:
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
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.
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
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
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
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”;
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]);
}
}
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);
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 :
12
13
C. LISTING