STACK
1
Ahmad Haidaroh
PENGERTIAN STACK
2
ď‚— merupakan sebuah koleksi objek yang
menggunakan prinsip LIFO (Last In First Out), yaitu
data yang terakhir kali dimasukkan akan pertama
kali keluar dari stack tersebut. Stack dapat
diimplementasikan sebagai representasi berkait atau
kontigu (dengan tabel fix)
Ciri Stack
3
ď‚— Elemen TOP (puncak) diketahui
ď‚— penyisipan dan penghapusan elemen selalu
dilakukan di TOP
ď‚— LIFO (Last In First Out),
Ilustrasi Stack
4
ď‚— Terdapat dua buah kotak yang ditumpuk, kotak yang
satu akan ditumpuk diatas kotak yang lainnya. Jika
kemudian stack 2 kotak tadi, ditambah kotak ketiga,
keempat, kelima, dan seterusnya, maka akan
diperoleh sebuah stack kotak yang terdiri dari N
kotak.
Ilustrasi Stack - Cont.
5
OPERASI PADA STACK
6
ď‚— Push (input E : typeelmt, input/output data : stack):
menambahkan sebuah elemen ke stack
ď‚— Pop (input/output data : stack, output E : typeelmt ) :
menghapus sebuah elemen stack
ď‚— IsEmpty ()
ď‚— IsFull ()
ď‚— dan beberapas selektor yang lain
OPERASI PADA STACK – Cont.
7
ď‚— Operasi Push
OPERASI PADA STACK
8
1. buat stack (stack) - create
ď‚— membuat sebuah stack baru yang masih kosong
ď‚— spesifikasi:
ď‚— tujuan : mendefinisikan stack yang kosong
ď‚— input : stack
ď‚— syarat awal : tidak ada
ď‚— output stack : - (kosong)
ď‚— syarat akhir : stack dalam keadaan kosong
OPERASI PADA STACK
9
2. stack kosong (stack) - empty
ď‚— fungsi untuk menentukan apakah stack dalam
keadaan kosong atau tidak
ď‚— spesifikasi:
ď‚— tujuan : mengecek apakah stack dalam keadaan
kosong
ď‚— input : stack
ď‚— syarat awal : tidak ada
ď‚— output : boolean
ď‚— syarat akhir : stack kosong bernilai true jika stack
dalam keadaan kosong
OPERASI PADA STACK
10
3. stack penuh (stack) - full
ď‚— fungsi untuk memeriksa apakah stack yang
ada sudah penuh
ď‚— spesifikasi:
ď‚— tujuan : mengecek apakah stack dalam keadaan
penuh
ď‚— input : stack
ď‚— syarat awal : tidak ada
ď‚— output : boolean
ď‚— syarat akhir : stack penuh bernilai true jika stack
dalam keadaan penuh
OPERASI PADA STACK
11
4. push (stack, info baru)
ď‚— menambahkan sebuah elemen kedalam stack.
ď‚— spesifikasi:
ď‚— tujuan : menambahkan elemen, info baru pada
stack pada posisi paling atas
ď‚— input : stack dan Info baru
ď‚— syarat awal : stack tidak penuh
ď‚— output : stack
ď‚— syarat akhir : stack bertambah satu elemen
OPERASI PADA STACK
12
5. pop (stack, info pop)
ď‚— mengambil elemen teratas dari stack
ď‚— spesifikasi:
ď‚— tujuan : mengeluarkan elemen dari stack yang
berada pada posisi paling atas
ď‚— input : stack
ď‚— syarat awal : stack tidak kosong
ď‚— output : stack dalam info pop
ď‚— syarat akhir : stack berkurang satu elemen
13
CONTOH PEMANFAATAN STACK
14
ď‚— Notasi Infix Prefix
ď‚— Notasi Infix Postfix
Pemanfaatan stack antara lain untuk menulis ungkapan dengan
menggunakan notasi tertentu.
Contoh :
( A + B ) * ( C – D )
Tanda kurung selalu digunakan dalam penulisan ungkapan numeris
untuk mengelompokkan bagian mana yang akan dikerjakan terlebih
dahulu.
Dari contoh (A+B) akan dikerjakan terlebih dahulu, kemudian baru (C–
D) dan terakhir hasilnya akan dikalikan.
A + B * C – D
B * C akan dikerjakan terlebih dahulu, hasil yang didapat akan berbeda
dengan hasil notasi dengan tanda kurung.
Notasi Infix Prefix
Cara penulisan ungkapan yaitu dengan menggunakan notasi infix,
yang artinya operator ditulis diantara 2 operator.
Seorang ahli matematika bernama Jan Lukasiewiccz mengembangkan
suatu cara penulisan ungkapan numeris yang disebut prefix, yang
artinya operator ditulis sebelum kedua operand yang akan disajikan.
Contoh :
Proses konversi
dari infix ke prefix :
= ( A + B ) * ( C – D )
= [ + A B ] * [ - C D ]
= * [ + A B ] [ - C D ]
= * + A B - C D
15
Infix Prefix
A + B + A B
A + B – C - + A B C
( A + B ) * ( C – D ) * + A B – C D
Notasi Infix Postfix
Cara penulisan ungkapan yaitu dengan menggunakan
notasi postfix, yang artinya operator ditulis sesudah
operand.
Contoh :
Proses konversi
dari infix ke postfix :
= ( 6 - 2 ) * ( 5 + 4 )
= [ 6 2 - ] * [ 5 4 + ]
= [ 6 2 - ] [ 5 4 + ] *
= 6 2 - 5 4 + *
16
Infix Postfix
16 / 2 16 2 /
( 2 + 14 ) * 5 2 14 + 5 *
2 + 14 * 5 2 14 5 * +
( 6 – 2 ) * ( 5 + 4 ) 6 2 – 5 4 + *
Contoh :
Penggunaan notasi postfix dalam stack, misal :
2 14 + 5 * = 80
17
push 2 pop 14 push 5 pop 5 pop 80
push 14 pop 2 pop 16
push 2 +
14
push 16
* 5
14 5
2 16 16 80
18

5 STACK

  • 1.
  • 2.
    PENGERTIAN STACK 2 ď‚— merupakansebuah koleksi objek yang menggunakan prinsip LIFO (Last In First Out), yaitu data yang terakhir kali dimasukkan akan pertama kali keluar dari stack tersebut. Stack dapat diimplementasikan sebagai representasi berkait atau kontigu (dengan tabel fix)
  • 3.
    Ciri Stack 3 ď‚— ElemenTOP (puncak) diketahui ď‚— penyisipan dan penghapusan elemen selalu dilakukan di TOP ď‚— LIFO (Last In First Out),
  • 4.
    Ilustrasi Stack 4 ď‚— Terdapatdua buah kotak yang ditumpuk, kotak yang satu akan ditumpuk diatas kotak yang lainnya. Jika kemudian stack 2 kotak tadi, ditambah kotak ketiga, keempat, kelima, dan seterusnya, maka akan diperoleh sebuah stack kotak yang terdiri dari N kotak.
  • 5.
  • 6.
    OPERASI PADA STACK 6 ď‚—Push (input E : typeelmt, input/output data : stack): menambahkan sebuah elemen ke stack ď‚— Pop (input/output data : stack, output E : typeelmt ) : menghapus sebuah elemen stack ď‚— IsEmpty () ď‚— IsFull () ď‚— dan beberapas selektor yang lain
  • 7.
    OPERASI PADA STACK– Cont. 7  Operasi Push
  • 8.
    OPERASI PADA STACK 8 1.buat stack (stack) - create ď‚— membuat sebuah stack baru yang masih kosong ď‚— spesifikasi: ď‚— tujuan : mendefinisikan stack yang kosong ď‚— input : stack ď‚— syarat awal : tidak ada ď‚— output stack : - (kosong) ď‚— syarat akhir : stack dalam keadaan kosong
  • 9.
    OPERASI PADA STACK 9 2.stack kosong (stack) - empty ď‚— fungsi untuk menentukan apakah stack dalam keadaan kosong atau tidak ď‚— spesifikasi: ď‚— tujuan : mengecek apakah stack dalam keadaan kosong ď‚— input : stack ď‚— syarat awal : tidak ada ď‚— output : boolean ď‚— syarat akhir : stack kosong bernilai true jika stack dalam keadaan kosong
  • 10.
    OPERASI PADA STACK 10 3.stack penuh (stack) - full ď‚— fungsi untuk memeriksa apakah stack yang ada sudah penuh ď‚— spesifikasi: ď‚— tujuan : mengecek apakah stack dalam keadaan penuh ď‚— input : stack ď‚— syarat awal : tidak ada ď‚— output : boolean ď‚— syarat akhir : stack penuh bernilai true jika stack dalam keadaan penuh
  • 11.
    OPERASI PADA STACK 11 4.push (stack, info baru) ď‚— menambahkan sebuah elemen kedalam stack. ď‚— spesifikasi: ď‚— tujuan : menambahkan elemen, info baru pada stack pada posisi paling atas ď‚— input : stack dan Info baru ď‚— syarat awal : stack tidak penuh ď‚— output : stack ď‚— syarat akhir : stack bertambah satu elemen
  • 12.
    OPERASI PADA STACK 12 5.pop (stack, info pop) ď‚— mengambil elemen teratas dari stack ď‚— spesifikasi: ď‚— tujuan : mengeluarkan elemen dari stack yang berada pada posisi paling atas ď‚— input : stack ď‚— syarat awal : stack tidak kosong ď‚— output : stack dalam info pop ď‚— syarat akhir : stack berkurang satu elemen
  • 13.
  • 14.
    CONTOH PEMANFAATAN STACK 14 Notasi Infix Prefix  Notasi Infix Postfix Pemanfaatan stack antara lain untuk menulis ungkapan dengan menggunakan notasi tertentu. Contoh : ( A + B ) * ( C – D ) Tanda kurung selalu digunakan dalam penulisan ungkapan numeris untuk mengelompokkan bagian mana yang akan dikerjakan terlebih dahulu. Dari contoh (A+B) akan dikerjakan terlebih dahulu, kemudian baru (C– D) dan terakhir hasilnya akan dikalikan. A + B * C – D B * C akan dikerjakan terlebih dahulu, hasil yang didapat akan berbeda dengan hasil notasi dengan tanda kurung.
  • 15.
    Notasi Infix Prefix Carapenulisan ungkapan yaitu dengan menggunakan notasi infix, yang artinya operator ditulis diantara 2 operator. Seorang ahli matematika bernama Jan Lukasiewiccz mengembangkan suatu cara penulisan ungkapan numeris yang disebut prefix, yang artinya operator ditulis sebelum kedua operand yang akan disajikan. Contoh : Proses konversi dari infix ke prefix : = ( A + B ) * ( C – D ) = [ + A B ] * [ - C D ] = * [ + A B ] [ - C D ] = * + A B - C D 15 Infix Prefix A + B + A B A + B – C - + A B C ( A + B ) * ( C – D ) * + A B – C D
  • 16.
    Notasi Infix Postfix Carapenulisan ungkapan yaitu dengan menggunakan notasi postfix, yang artinya operator ditulis sesudah operand. Contoh : Proses konversi dari infix ke postfix : = ( 6 - 2 ) * ( 5 + 4 ) = [ 6 2 - ] * [ 5 4 + ] = [ 6 2 - ] [ 5 4 + ] * = 6 2 - 5 4 + * 16 Infix Postfix 16 / 2 16 2 / ( 2 + 14 ) * 5 2 14 + 5 * 2 + 14 * 5 2 14 5 * + ( 6 – 2 ) * ( 5 + 4 ) 6 2 – 5 4 + *
  • 17.
    Contoh : Penggunaan notasipostfix dalam stack, misal : 2 14 + 5 * = 80 17 push 2 pop 14 push 5 pop 5 pop 80 push 14 pop 2 pop 16 push 2 + 14 push 16 * 5 14 5 2 16 16 80
  • 18.