Anda di halaman 1dari 16

LAPORAN STRUKTUR DATA LINEAR

Laporan 9 : STACK OF OBJECT

Nama : Katharina Tyas Aprilia


NIM : 195314031

Kelas D
Program Studi Teknik Informatika
Fakultas Sains Dan Teknologi
Universitas Sanata Dharma
Yogyakarta
2020
A. TUJUAN PRATIKUM
1. Mahasiswa mampu memahami pembuatan algoritma tentang stack baik
secara statis maupun dinamis.
2. Mahasiswa mampu membuat program stack statis dan stack dinamis

B. LISTING PROGRAM DAN ANALISA


1. Kelas StackStatis (StackArray)
- Listing Program

- Analisa
 Dari program diatas merupakan program untuk Statac secara statis
yaitu menggunakan array. Pada program tersebut, terdapat kontruktor
yang memiliki parameter yaitu panjang yang berfungsi untuk
mendeklarasikan jumlah tumpukan yang dapat dimuat nantinya, lalu
panjang tersebut disimpan di elemen. Pada program tersebut juga
terdapat method push yang berfungsi untuk menambah atau mengisi
tumpukan dengan data sehingga jika pada main memanggil method
push maka tumpukan akan diisi data. Terdapat pula method pop yang
berfungsi untuk mengambil atau menghapus data dari tumpukan,
tetapi dalam menghapus data diambil data paling atas, karena dalam
stack atau tumpukan, data yang diambil sesuai urutan paling atas, jika
data pertama atau data yang paling atas maka data tersebut
ditampilkan paling bawah atau akhir. Selain itu, terdapat method
isEmpty yang berfungsi untuk mengecek apakah tumpukan tersebut
kosong atau tidak. Dan juga terdapat method toString untuk
menampilkan data.

2. Kelas Main StackStatis (StackArray)


- Listing Program

- Output

- Analis
 Dari program diatas merupakan main dari kelas StackStatis,
dimana pada main tersebut membuat objek baru dari kelas StackStatis
yaitu objek stack. Setelah itu pada main tersebut hanya memanggil
method push dan pop yang sudah dibuat pada kelas StackStatis. Jika
memanggil method push maka data diisi untuk dimasukkan ke dalam
tumpukan, jika tidak diisi maka akan error. Jika memanggil method
pop, maka otomatis program akan secara otomatis akan menghapus
data yang paling atas. Lebih jelasnya saya akan memberikan ilustrasi
untuk StackStatis ini :
1. StackArray stack = new StackArray(5)

front = -1 size = 0

2. stack.push(new Mahasiswa(“Tyas ", "195314031", "Informatika",


"Pekanbaru"))

Tyas,
195314031,
Informatika,
Pekanbaru
front = 0 size = 1

3. stack.push(new Mahasiswa("Navi ", "195314034", "Informatika",


"Magelang"))

Navi,
195314034,
Informatika,
Magelang
Tyas,
195314031,
Informatika,
Pekanbaru

front = 1 size = 2
4. stack.push(new Mahasiswa("Bella ", "195314035", "Informatika",
"Medan"))

Bella,
195314035,
Informatika,
Medan
Navi,
195314034,
Informatika,
Magelang
Tyas,
195314031,
Informatika,
Pekanbaru
front = 2 size = 3

5. stack.push(new Mahasiswa("Selvia", "195314036", "Informatika",


"Kalimantan"))

Selvia,
195314036,
Informatika,
Kalimantan
Bella,
195314035,
Informatika,
Medan
Navi,
195314034,
Informatika,
Magelang
Tyas,
195314031,
Informatika,
Pekanbaru
front = 3 size = 4

6. stack.push(new Mahasiswa("Frista", "195314037", "Informatika",


"Kalimantan"))
Frista,
195314037,
Informatika,
Kalimantan
Selvia,
195314036,
Informatika,
Kalimantan
Bella,
195314035,
Informatika,
Medan
Navi,
195314034,
Informatika,
Magelang
Tyas,
195314031,
Informatika,
Pekanbaru
front = 4 size = 5

7. stack.pop() Pop 1 ((Frista, 195314037, Informatika, Kalimantan)

Selvia,
195314036,
Informatika,
Kalimantan
Bella,
195314035,
Informatika,
Medan
Navi,
195314034,
Informatika,
Magelang
Tyas,
195314031,
Informatika,
Pekanbaru
front = 3 size = 4

8. stack.pop() Pop 2 (Selvia, 195314036, Informatika, Kalimantan)

Bella,
195314035,
Informatika,
Medan
Navi,
195314034,
Informatika,
Magelang
Tyas,
195314031,
Informatika,
Pekanbaru
front = 2 size = 3

9. stack.pop() Pop 3 (Bella, 195314035, Informatika, Medan)

Navi,
195314034,
Informatika,
Magelang
Tyas,
195314031,
Informatika,
Pekanbaru
front = 1 size = 2

10. stack.pop() Pop 4 (Navi, 195314034, Informatika, Magelang)

Tyas,
195314031,
Informatika,
Pekanbaru
front = 0 size = 1

11. stack.pop() Pop 5 (Tyas, 195314031, Informatika, Pekanbaru)

front = -1 size = 0

3. Kelas StackDinamis
- Listing Program
- Analisa
 Pada program diatas merupakan Program Stack yang dibuat secara
dinamis, dimana pada Stack Dinamis ini menggunakan LinkedList
atau menggunakan senarai. Pada program diatas menggunakan senarai
ganda atau double link list. Pada program diatas terdapat kontruktor
dari kelas StackDinamis dimana didalam kontruktor tersebut
mendeklarasikan atribut dari tumpukan menjadi objek baru dari kelas
LinkedList yang sudah dibuat. Terdapat method push juga yang
berfungsi untuk menambah data pada tumpukan, pada method tersebut
penambahan data dilakukan dengan penambahan data di belakang atau
addLast. Terdapat method pop yang berfungsi untuk mengambil data
dari tumpukan, dimana pengambilan data dilakukan pada data terakhir
atau removeLast. Dan juga terdapat method toString untuk
menampilkan data.

4. Kelas ListNode
- Listing Program
- Analisa
 Dari program diatas merupakan program untuk mendeklarasikan
kelas dari ListNode. Pada Stack juga memakai atribut yang digunakan
pada double link yaitu elemen, next dan prev. Ketiga atribut tersebut
digunakan pada kelas LinkedList, fungsi dari next adalah untuk ke
elemen selanjutnya, sedangkan prev untuk elemen sebelumnya. Pada
kelas ListNode ini, digunakan untuk setter dan getter dari ketiga
atribut tersebut. Dan tersedapat 3 kontruktor dengan nama yang sama
tetapi parameter yang berbeda. Karena ketiga kontruktor tersebut
digunakan pada kelas LinkedList nantinya.

5. Kelas Linked List


- Listing Program
- Analisa
a. Dari program diatas merupakan merupakan program dari kelas
LinkedList dimana didalam kelas tersebut terdapat berbagai
method yang berguna untuk program senarai ganda ini.

b. Pada program diatas merupakan kontruktor dari kelas LinkedList


dengan mendeklarasikan atribut head merupakan new ListNode,
setelah itu mendeklarasikan head.prev merupakan head dan
head.next adalah head. Dan mendeklarasikan size = 0

c. Pada program diatas merupakan method addBefore dengan


parameter elemen dan temp. method ini berfungsi untuk
menambah data baik ditambah di awal atau first atau ditambah di
akhir atau last. Dengan membuat objek baru dari kelas ListNode,
melakukan setNext dan setPrev pada objek ListNode. Dan setelah
itu melakukan getPrev.setNext pada atribut temp dan melakukan
setPrev pada atribut temp. setelah itu size ditambah dan
mengembalikan objek ListNode. Jika ingin melakukan addFirst
atau tambah data diawal dapat memanggil method ini :

d. Dengan memanggil method dari addBefore dengan nilai parameter


dari elemen dan head.next, maka otomatis data yang akan
ditambah berada pada posisi awal. Jika ingin melakukan addLast
atau tambah data di akhir dapat memanggil method ini :

e. Dengan memanggil method dari addBefore tetapi berbeda dengan


addFirst, pada addLast ini nilai dari parameter tersebut elemen dan
head saja. Maka otomatis data akan ditambah di akhir.

f. Pada program diatas merupakan method Remove dengan


parameter temp. method ini berfungsi untuk melakukan hapus data
baik diawal atau diakhir. Dengan melakukan getNext.setPrev pada
temp dan melakukan getPrev.setNext pada temp setelah itu
mengurangi atribut size dan mengembalikan nilai
temp.getElemen(). Jika ingin melakukan hapus data diawal atau
removeFirst, dapat memanggil method ini :
g. Pada method tersebut memanggil method remove dengan nilai
parameter head.next, sehingga otomatis data yang ada berada pada
posisi awal akan dihapus lalu mengembalikkan nilai tersebut. Jika
ingin melakukan hapus data diakhir dapat memanggil method ini :

h. Dengan memanggil method dari remove dengan nilai parameter


head.prev atau data yang berada pada posisi akhir, setelah itu nilai
tersebut direturn atau dikembalikkan sehingga otomatis data pada
posisi akhir akan dihapus.

6. Kelas Main StackDinamis


- Listing Program

- Output

- Analisa
 Pada program diatas merupakan main dari kelas StaticDinamis
dimana pada program tersebut membuat objek baru dari kelas
StackDinamis yaitu objek obj. setelah itu memanggil method push dan
pop untuk menambah dan menghapus data. Dimana pada kelas
StackDinamis tadi method push melakukan penambahan data
diterakhir atau addLast, jadi data ditambah ke belakang. Dan juga pada
method push dimana pada kelas StackDinamis tadi penghapusan data
diterakhir atau menggunakan removeLast. Untuk lebih jelas saya akan
memberikan ilustrasinya:
1. StackLinkedList stackL = new StackLinkedList

front = -1 size = 0

2. stackL.push(new Mahasiswa("Winda ", "195314039",


"Informatika", "Jogja"))
Winda,
195314039,
Informatika,
Jogja
front = 0 size = 1

3. stackL.push(new Mahasiswa("Daria ", "195314040",


"Informatika", "Kalimantan"))

Daria,
195314040,
Informatika,
Kalimantan
Winda,
195314039,
Informatika,
Jogja
front = 1 size = 2

4. stackL.push(new Mahasiswa("Celsi ", "195314041", "Informatika",


"Paingan"))

Celsi,
195314041,
Informatika,
Paingan
Daria,
195314040,
Informatika,
Kalimantan
Winda,
195314039,
Informatika,
Jogja
front = 2 size = 3
5. stackL.pop() Pop 3 (Celsi, 195314041, Informatika, Paingan)

Daria,
195314040,
Informatika,
Kalimantan
Winda,
195314039,
Informatika,
Jogja
front = 1 size = 2

6. stackL.pop() Pop 4 (Daria, 195314040, Informatika, Kalimantan)

Winda,
195314039,
Informatika,
Jogja
front = 0 size = 1

7. stackL.pop() Pop 5 (Daria, 195314040, Informatika, Kalimantan)

front = -1 size = 0

C. KESIMPULAN
 Dari pratikum ini kita sebagai mahasiswa mendapat tambahan materi lagi
tentang stack atau tumpukan, dimana cara kerja tumpukan ini seperti
menumpuk barang, jika barang tersebut diambil maka barang yang paling
atas lah yang diambil duluan. Dan juga pada program stack ini menggunakan
statis dan dinamis, dimana pada stack statis menggunakan array dan pada
stack dinamis menggunakan double link.

D. DAFTAR PUSTAKA
Modul 10 “STACK” 2020

Anda mungkin juga menyukai