Latihan 1: BAB: Adt Stack Nama: Fathan Mubina NIM: 185150400111055 TANGGAL: 22/10/2019 Asisten: Gilang Nur A'Idi
Latihan 1: BAB: Adt Stack Nama: Fathan Mubina NIM: 185150400111055 TANGGAL: 22/10/2019 Asisten: Gilang Nur A'Idi
Latihan 1: 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 }
1 arr_stack[count] = item;
2 System.out.print ( "\n# PUSH No urut/index : " +
count + ", Push :" + item);
3 count++;
1 --count;
2 System.out.print ( "\n##POP No urut/index : " +
count + ", Value :" + arr_stack[count]);
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.
Q=A+(B*C-(D/E^F)*G)*H
Maka setelah melewati notasi polish maka akan menjadi postfix berupa
Q = ABC*DEF^/G*-H*+