Pertemuan ke:
02 Fakultas
Sains dan Teknologi
Stack
Akhir Presentasi
Aplikasi Array
• Aplikasi penggunaan array berupa :
– Stack ( tumpukan ),
– Queue ( antrian ) dan
– Dequeue ( antrian 2 Arah )
Kreativitas Membangkitkan 2
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Stack
• Stack adalah sekumpulan organisasi atau strukturnya bersifat Tumpukan,
salah satu Ilustrasi Stack yang mudah dipahami misalnya tumpukan buku
diatas meja yang diilustrasikan sebagai berikut :
Kreativitas Membangkitkan 3
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Proses yang dapat dilakukan terhadap Stack
• PUSH untuk :
- Penempatan atau
- Masuk, atau
- Insert, atau
- Tulis
• POP untuk :
- Ambil atau
- Keluar, atau
- Delete, atau
- Baca/ Hapus
Kreativitas Membangkitkan 4
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Prinsip Stack
• LIFO (LAST IN FIRST OUT ) :
Kreativitas Membangkitkan 5
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
SINGLE STACK
• Single Stack atau Stack Tunggal adalah stack yang terdiri dari
satu collection.
• Singgle Stack dalam satu array. (array hanya digunakan oleh
satu stack) Dasar Stack berada pada sisi index terkecil.misal n = 10
• Ilustrasi :
n-1
-1 0 1 2 3 4 5 6 7 8 9
S[ ] 25 12 17 15
Top
3 15
Top x
Kreativitas Membangkitkan 6
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
SINGGLE STACK
• Stack menggunakan array S[ ] dengan 10 elemen
( n=10)
• Isi Stack ada 4 Elemen.
o S[0] yang paling bawah dan
o S[3] yang paling atas
• Top : untuk menunjuk nomor elemen array yang
menampung isi stack yang paling atas. Dalam ilustrasi
diatas isinya adalah 3
Kreativitas Membangkitkan 7
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Kondisi Stack
1. Stack kosong tak ada Isinya (awal)
-1 0 1 2 3 4 5 N-1
S[ ]
Top
Kreativitas Membangkitkan 8
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Kondisi Stack
2. Stack penuh tak bisa diisi
-1 0 1 2 3 4 5 N-1
S[ ] X X X X X X X
– STACK dalam kondisi :
• Penuh Top = n-1
• Ada Isinya Top >-1
Top
3. Stack bisa diisi
-1 0 1 2 3 4 5 N-1
S[ ] X X X … … … …
• STACK dalam kondisi :
Bisa diisi Top < n
Ada isinya Top > 0
Top
Kreativitas Membangkitkan 9
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
KONDISI SINGLE STACK CIRI
1 KOSONG, tak ada isinya Top = -1
2 PENUH, tak bisa di isi Top = n-1
3 BISA DI ISI, (kebalikan penuh) Top < n-1
Kreativitas Membangkitkan 11
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Proses Awal
Di mana semua pointer Dasar dan Top dimulai dari -1
Public void Awal()
{
Top = -1;
}
Kreativitas Membangkitkan 12
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
• Algoritma dasar proses Push • Algoritma Lengkap proses Push (simpan)
(simpan) • Periksa dahulu apakah Top<n
• Naikkan Top dengan 1 • Naikkan Top dengan 1
• Isikan data kedalam elemen • Isikan data kedalam elemen yang ditunjuk Top
yang ditunjuk Top • Jika Sudah penuh cetak “Stack Penuh”
-1 0 1 2 3 4 5 6 7 8 9 10
S[ ]
Cirinya :
Dasar1 =-1 , Top1 = -1
Dasar2 = n , Top2 = n
Kreativitas Membangkitkan 16
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Kondisi Stack
2. Stack1 dan Stack2 ada Isinya
-1 0 1 2 3 4 5 6 7 8 9 10
S[ ] a a a a b b b
Cirinya :
Dasar1 =-1 , Dasar2 = n Stack1 ada isinya dan bisa di isi
Masih bisa diisi Top2-Top1 >1 Stack2 ada isinya dan bisa di isi
Kreativitas Membangkitkan 17
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
3. Stack Penuh ( Tak bisa di isi)
-1 0 1 2 3 4 5 6 7 8 9 10
S[ ] a a a a a b b b b b
-1 0 1 2 3 4 5 6 7 8 9 10
Stack1 ada isinya
S[ ] a a a a a b b b b b Stack2 tak ada isinya
Cirinya :
Top1 = n-1
Dasar 1Dasar2= n , Top2 = n Top 1 Dasar 2
Top 2
Kreativitas Membangkitkan 18
@adt_lotu
< Menu Akhiri >
Menu
s
Akhiri
Inovasi
KONDISI STACK CIRI
1 STACK1 KOSONG Top1= -1
STACK2 KOSONG Top2 = n
2 STACK1 DAN STACK 2 PENUH Top2 – Top1 =1
3 STACK1 DAN STACK2 BISA DIISI Top2 – Top1 > 1
4 STACK1 ADA ISINYA Top1 > -1
STACK2 ADA ISINYA Top2 < n
Kreativitas Membangkitkan 19
@adt_lotu
< Menu Akhiri >
Menu
s
Akhiri
Inovasi
Proses
• Awal (Inisialisasi)
• Push1
• Pop1
• Push2
• Pop2
Kreativitas Membangkitkan 20
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Algoritma Proses Awal Stack
Public void Awal()
{
Top1 = -1;
Top2 = n;
}
Kreativitas Membangkitkan 21
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Algoritma Dasar proses Push1 (simpan)
• Naikkan Top dengan 1
• Isikan data kedalam elemen yang ditunjuk Top
Kreativitas Membangkitkan 22
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Public void Push1()
{
if ( Top2-Top1>1 )
{
Top1 = Top1 + 1;
S[Top1] = X;
}
else
System.out.println(“Stack Penuh !”);
}
@adt_lotu Kreativitas Membangkitkan 23
< Menu
Menu Akhiri
Akhiri > Inovasi
s
Algoritma dasar proses Pop1(ambil)
• Copy data dari elemen yang ditunjuk Top1 kedalam
suatu Variabel
• Turunkan Top1
Top 1 Top 2
Kreativitas Membangkitkan 25
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Kodisi Stack
1. Kondisi Awal
misal n = 10
n
-1 0 1 2 3 4 5 6 7 8 9 10
S[ ]
Dasar 1 Dasar 2
Dasar1 = div(n,2) + 1
Top 1 Top 2
Top1 = div(n,2) + 1
Dasar2 = div(n,2)
Top2 = div(n,2)
Stack1 masih bisa di isi Top1>0
Stack2 masih bis diisi Top2 < n
Kreativitas Membangkitkan 26
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Kodisi Stack
2. Stack ada isinya
misal n = 10
n
-1 0 1 2 3 4 5 6 7 8 9 10
S[ ] a a a b b b
Cirinya :
Stack1 masih bisa di isi Top1>1
Stack2 masih bis diisi Top2 < n
Kreativitas Membangkitkan 27
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Kondisi Stack
3. Stack penuh
misal n = 10
n
-1 0 1 2 3 4 5 6 7 8 9 10
S[ ] a a a a a b b b b b
Cirinya
Top1 = 0
Top2 = n-1
Kreativitas Membangkitkan 28
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
KONDISI STACK CIRI
1 STACK1 KOSONG Top1= div(n,2) +1
STACK2 KOSNG Top2= div(n,2)
2 STACK1 PENUH Top1 = 0
STACK 2 PENUH Top2 = n-1
3 STACK1 BISA DIISI Top1 > 0
STACK2 BISA DIISI Top2 < n
4 STACK1 ADA ISINYA Top1< div(n,2) + 1
STACK2 ADA ISINYA Top2 > div(n,2)
Kreativitas Membangkitkan 29
@adt_lotu
< Menu Akhiri >
Menu
s
Akhiri
Inovasi
Proses
• Awal (Inisialisasi)
• Push1
• Pop1
• Push2
• Pop2
Kreativitas Membangkitkan 30
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Terima Kasih
Aditiya Hermawan, M.Kom