Latihan 1: BAB: Adt Stack Nama: Fathan Mubina NIM: 185150400111055 TANGGAL: 22/10/2019 Asisten: Gilang Nur A'Idi

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 7

LABORATORIUM PEMBELAJARAN ILMU KOMPUTER

FAKULTAS ILMU KOMPUTER


UNIVERSITAS BRAWIJAYA

BAB : ADT STACK


NAMA : FATHAN MUBINA
NIM : 185150400111055
TANGGAL : 22/10/2019
ASISTEN : GILANG NUR A’IDI

LATIHAN 1
A. Soal
1. Buatlah file percobaan stack_array.java berikut:
stack_array.java
1 import java.util.Scanner;
2 Public class stack_ array {
3 Scanner masuk = new Scanner(System.in);
4 int choice, i;
5 char item;
6 char arr_stack[MAX_SIZE];
7 int count = 0;
8 int keluar = 0;
9 Public void push(char item)
10 {
11 if (count == MAX_SIZE)
12 {
13 system.out.print ( "\n# Stack Penuh");
14 }
15 else
16 {
17 ..........
18 ..........
19 ..........
20 }
21 }
22 Public void pop()
23 {
24 if (count == 0)
25 system.out.print ( "\n## Stack kosong");
26 else
27 {
28 ...........
29 ...........
30 }
31 }
32 Public void printAll()
33 {
34 system.out.print ( "\n## Stack Size : " + count);
35 for (i = (count - 1); i >= 0; i--)
36 system.out.print ( "\n## No Urut/index : " + i + ", Value
37 :" + arr_stack[i]);
38 }
39 Public void menu()
40 {
41
42 system.out.print ( "\nMasukkan operasi yang akan dilakukan
(1:push, 2:pop,
43 3:print) : ");
44 choice=masuk.nextInt();
45 switch (choice)
46 {
47 case 1:
48 {
49 system.out.print ( "\nMasukkan huruf yang akan dipush : ");
50 item= masuk.nextLine();
51 push(item);
52 }
53 break;
54 case 2:pop();
55 break;
56 case 3:printAll();
57 break;
58 default:
59 system.out.print ( "\n1:push, 2:pop, 3:print\n");
60 keluar = 1;
61 break;
62 }
63 }
64 Public static void main()
65 {
66 do{
67 menu();
68 } while (keluar == 0);
69 }
70 }

2. Tambahkan kode berikut pada baris 20 sampai 22

1 arr_stack[count] = item;
2 System.out.print ( "\n# PUSH No urut/index : " +
count + ", Push :" + item);
3 count++;

3. Tambahkan kode berikut pada baris 32 dan 33

1 --count;
2 System.out.print ( "\n##POP No urut/index : " +
count + ", Value :" + arr_stack[count]);

4. Jalankan program dan


◦ pilih menu push dan masukkan “A”
◦ pilih menu push dan masukkan “B”
◦ pilih menu push dan masukkan “C”
◦ pilih menu print
◦ pilih menu pop
◦ pilih menu print
◦ pilih menu push dan masukkan “D”
◦ pilih menu print
B. Screenshot

C. Syntax
stack_class.java
1 import java.util.Scanner;
2 public class stack_array {
3 Scanner masuk = new Scanner(System.in);
4 int choice, i;
5 char item;
6 char [] arr_stack = new char [20];
7 int count = 0;
8 int keluar = 0;
9 public void push(char item) {
10 if (count == 20) {
11 System.out.print("\n# Stack Penuh");
12 } else {
13 arr_stack[count] = item;
System.out.print("\n# PUSH No urut/index : " +
14 count + ", Push :" + item);
count++;
15 }
16 }
17 public void pop() {
18 if (count == 0) {
19 System.out.print("\n## Stack kosong");
20 } else {
21 --count;
22 System.out.print("\n##POP No urut/index : " +
23 count + ", Value :" + arr_stack[count]);
}
24 }
25 public void printAll() {
26 System.out.print("\n## Stack Size : " + count);
27 for (i = (count - 1); i >= 0; i--) {
28 System.out.print("\n## No Urut/index : " + i +
29 ", Value :" + arr_stack[i]);
}
30 }
31 public void menu() {
32 do {
33 System.out.print("\nMasukkan operasi yang akan
34 dilakukan (1:push, 2:pop,3:print) : ");
choice = masuk.nextInt();
35 switch (choice) {
36 case 1: {
37 System.out.print("\nMasukkan huruf yang
38 akan dipush : ");
char item = masuk.next().charAt(0);
39 push(item);
40 break;
41 }
42 case 2:
43 pop();
44 break;
45 case 3:
46 printAll();
47 break;
48 default:
49 System.out.print("\n1:push, 2:pop,
50 3:print\n");
keluar = 1;
51 break;
52 }
53 } while (keluar == 0);
54 }
55 public static void main (String [] args) {
56 stack_array a = new stack_array();
57 a.menu();
58 }
59 }
60
D. Penjelasan
stack_class.java
1 Mengimport fungsi scanner
2 Deklarasi kelas stack_array
3 Deklarasi fungsi scanner di dalam class
4 Deklarasi variabel c dan choice
5 Deklarasi char item
6 Deklarasi stack array dengan ukuran maksimal sebesar 20
7 Deklarasi variabel count dengan besar 0
8 Deklarasi variabel keluar sebesar 0
9 Inisialisasi method push dengan parameter char item
10 Seleksi kondisi jika counte bernilai maksimal maka
11 Tulis stack sudah penuh
12 Jika seleksi kondisi tidak terpenuhi
13 Deklarasi nilai array count sama dengan item
14 Mencetak nomor urut pada push
15 Menicrement variabel count
16 Menutup seleksi kondisi else
17 Menutup method push
18 Deklarasi method pop
19 Jika nilai dari variabel count sama dengan 0
20 Cetak nilai stack sama dengan 0
21 Seleksi kondisi else
22 Mengambil angka yang ada dalam stack
23 Mencetak angka pop yang diambil
24 Menutup seleksi kondisi else
25 Menutup method pop
26 Deklarasi method printall
27 Mencetak ukuran stack
28 Melakukang perulangan
29 Mencetak angka atau huruf yang dimasukkan dalam stack
30 Menutup perulangan for
31 Menutup method printall
32 Deklarasi method menu
33 Deklarasi perulangan do
34 Mencetak interface menu
35 Meminta user untuk memasukkan pilihan
36 Membuka switch case
37 Case pertama
38 Meminta user memasukkan inputan huruf
39 Menyimpan char inputan user
40 Mengepush angka ke dalam stack
41 Memberi break pada case pertama
42 Akhir dari case 1
43 Awal dari case 2
44 Melakukan operasi pop pada stack
45 Akhir dari case 2
46 Awal dari case 3
47 Melakukan method printAll
48 Akhir dari case 3
49 Operasi awal yang pasti dilakukan
50 Mencetak interface default
51 Deklarasi variabel keluar sama dengan 1
52 Akhir dari case default
53 Menutup switch case
54 Perulangan while jika nilai keluar sama dengan 0
55 Akhir dari method menu
56 Deklarasi method utama
57 Instansiasi objek
58 Pemanggilan objek menu
59 Akhir dari method main
60 Akhir dari class stack_array

E. Kesimpulan

Stack adalah sebuah struktur data berupa tumpukan yang dapat berisi
variabel yang umumnya angka atau huruf. Stack memiliki konsep Last In First
Out yang artinya variabel yang terakhir dimasukkan akan menjadi variabel
pertama yang dikeluarkan, hal ini biasa dianalogikan seperti menumpuk
barang dan mengambil tumpukan barang

Stack umumnya terbagi menjadi dua yaitu stack array dan linked list.
Pada stack array penggunaannya berisi data saja, pun dengan ruang memori
yang terbatas pada jumlah ruang yang dideklarasikan dalam kodingan. Pada
stack linked list memanfaatkan pointer dan data sehingga penggunaan dan
penulisannya lebih dinamis tidak terbatas pada ruang yang ada. Hal ini
menyebabkan stack linked list mampu ditambah beberapa method penambahan
dan penghilangan node sesuai dengan keinginan user.

Fungsi Method pada stack antara lain pada linked list terdapat
deklarasi untuk pendeklarasian stack, inisialisasi untuk memulai stack,
isEmpty untuk mengecek apakah stack kosong, POP untuk mengambilan data,
removeLast untuk menghilangkan data terakhir. Push unutk menambahkan
data, addLast menambah data terakhir, Count untuk mengetahui jumlah isi
data, Clear untuk membersihkan data, dan Peek untuk Pengaksesan elemen.
Pada array ada method tambahan berupa resizing untuk mengubah size pada
array.

Dalam kehidupan sehari-hari penerapan Stack terjadi ketika kita


menumpukan barang dan mengambilnya dari posisi paling atas. Sedangkan
dalam sudut pandang struktur data, Stack biasa digunakan dalam notasi Polish
dimana berfungsi mengubah notasi infix menjadi postfix. Dalam contoh ini
kita memiliki 2 variabel berupa P dan Q, dimana Q adalah stack atau infix dan
P adalah penampung Ekspresi matematika postfix. Dimisalkan ada sebuah
infix berupa

Q=A+(B*C-(D/E^F)*G)*H

Maka setelah melewati notasi polish maka akan menjadi postfix berupa
Q = ABC*DEF^/G*-H*+

You might also like