Anda di halaman 1dari 31

Struktur Data

Pertemuan ke:

02 Fakultas
Sains dan Teknologi
Stack

Aditiya Hermawan, M.Kom

Program Studi Pembuka


Teknik Informatika
Daftar Pustaka

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 ) :

Terakhir masuk, pertama keluar 


Atau
Data masuk terakhir akan diambil pertama kali.

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

– STACK dalam kondisi :


• Kosong Top = -1
• Bisa Diisi Top<n

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

4 ADA ISINYA (kebalikan kosong) Top > -1

@adt_lotu Kreativitas Membangkitkan 10


< Menu
Menu Akhiri
Akhiri > Inovasi
s
Operasi Pada Singgle Stack
• Awal (Inisialisasi)
• Push (Insert, Masuk, Simpan, Tulis)
• Pop (Delete, Keluar, Ambil, Baca/Hapus)

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”

Public void Push() Public void Push()


{ {
Top = Top + 1; if ( Top<n )
S[Top] = X; {
} Top = Top + 1;
S[Top] = X;
}
else
System.Out.Print(“Stack Penuh)”;
}
Kreativitas Membangkitkan 13
@adt_lotu
< Menu Akhiri >
Menu
s
Akhiri
Inovasi
Algoritma dasar proses Pop (ambil)
Copy data dari elemen yang ditunjuk Algoritma Lengkap proses Pop
Top kedalam suatu Variabel (Ambil)
Turunkan Top Periksa dahulu apakah Top………
 
…………………………………………
 Public void Pop()
{ Public void Pop()
X = S[Top]; { if (…………)
Top = Top –1 ; {
} ……………
……………
}
else
………………
}
Kreativitas Membangkitkan 14
@adt_lotu
< Menu Akhiri >
Menu
s
Akhiri
Inovasi
Double Stack
• Double Stack dalam satu array.
• Satu array digunakan oleh dua stack
• Dimana Dasar Stack1 berada pada sisi index terkecil
dan Dasar Stack2 berada Pada sisi index terbesar .
misal n = 10
n
-1 0 1 2 3 4 5 6 7 8 9 10
S[ ] a a a a b b b

Dasar 1 Top 1 Top 2 Dasar 2


3 7
Kreativitas Membangkitkan 15
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Top 1 Top 2 Inovasi
s
Kondisi Double Stack
1. Stack kosong tak ada Isinya (awal)

-1 0 1 2 3 4 5 6 7 8 9 10
S[ ]

Dasar 1Top 1 Top 2Dasar 2

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

Dasar 1 Top 1 Top 2 Dasar 2

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

Dasar 1 Top 1 Top 2 Dasar 2


Cirinya :
Top2 – Top1 = 1

-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

Public void Push1()


Algoritma Lengkap proses Push1 (simpan)
{ - Periksa dahulu apakah Top2-Top1>1
Top1 = Top1 + 1; - Naikkan Top dengan 1
- Isikan data kedalam elemen yang
S[Top1] = X; ditunjuk Top
} - Jika Sudah penuh cetak “Stack Penuh”

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

Public void Pop1()


{
X = S[Top1];
Top1 = Top1 –1 ;
}
Kreativitas Membangkitkan 24
<@adt_lotu
Menu
Menu Akhiri >
Akhiri
Inovasi
s
Double STACK Tipe 2
• Dua Stack dalam satu array.
• Satu array digunakan oleh dua stack
• Dimana Dasar kedua Stack berada ditengah .
misal n = 10
n
-1 0 1 2 3 4 5 6 7 8 9 10
S[ ] a a a b b b

Dasar1 selalu = div(n,2) +1


Top 1 Dasar 1 Dasar 2 Top 2
2 7 Dasar2 selalu = div(n,2)

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

Top 1 Dasar 1 Dasar 2 Top 2

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

Top 1 Dasar 1 Dasar 2 Top 2

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

Anda mungkin juga menyukai