Title: STACK ( TUMPUKAN )
1STACK ( TUMPUKAN )
2- Stack ( Tumpukan ) dapat diartikan sbg
- Suatu kumpulan data yang seolah-olah ada data yg
diletakkan diatas data yg lain, yg bisa
menyisipkan ( menambah ) data serta mengambil (
menghapus data ). - Cara penggambaran stack
- Operasi yg dpt dilakukan dalam stack
- 1. Menyisipkan / menambahkan data pd ujung atas
stack - ? push
- 2. Menghapus / mengeluarkan data dr ujung atas
stack - ? pop
- Prinsip kerja stack adalah LIFO ( Last In First
Out )
Top
D
C
B
A
Bottom
3Pop ( S )
Kondisi awal Stack
4
1
B
A
2
5
Pop ( S )
Push ( S, A )
A
A
Push ( S, D )
D
C
Push ( S, C )
C
Push ( S, C )
3
6
B
B
Push ( S, B )
Push ( S, B )
A
A
4- Latihan
- Gambarkan keadaan stack utk operasi berikut (
diasumsikan keadaan awal stack kosong ), stack
dapat menampung max 4 elemen berupa data NIM. - a. Tambahkan 2 no NIM ke dalam stack yaitu (
0631521001 0631521002 ) - b. keluarkan 1 elemen dari stack
- c. Tambahkan 3 elemen berikutnya ke dalam stack
dg data (0631521003 0631521004 0631521005 )
5- Penyajian awal Stack
- Dalam Pascal dikenal type data terstruktur yg
disebut ARRAY (LARIK). Dapat digunakan u
menyajikan sebuah tumpukan. Tapi penyajian dg
mengg. ARRAY adalah kurang tepat karena banyaknya
elemen dalam array adalah statis. - Sedangkan dalam tumpukan, banyaknya elemen dapat
bervariasi ( dinamis ). - Meskipun demikian, ARRAY dapat digunakan u
menyajikan sebuah tumpukan dg anggapan bahwa
banyaknya elemen max dari tumpukan tsb tidak akan
melebihi batas max banyaknya elemen dalam array. - Pada saat ukuran tumpukan ukuran array, jika
ditambahkan data baru akan menyebabkan
OVERFLOW. - Dengan demikian perlu adanya data tambahan u
mencatat posisi ujung atas tumpukan.
6- Dengan kebutuhan ini, penyajian tumpukan dapat
dilakukan dengan menggunakan type data
terstruktur yang lain yaitu RECORD ( Rekaman ) yg
terdiri dari 2 field - - Field 1 ? Digunakan u menyimpan elemen
tumpukan yg bertype array - - Field 2 ? Digunakan u mencatat posisi atas
ujung tumpukan. - Deklarasi STACK secara umum
- const MaxElemen 255
- type Tumpukan record
- Isi array1..MaxElemen of string
- atas 0..MaxElemen
- end
- var T Tumpukan
7- Operasi PUSH
-
- procedure PUSH ( var T Tumpukan X string )
- begin
- T.Atas T.Atas 1
- T.IsiT.Atas X
- end
- procedure PUSH ( var T Tumpukan X string )
- begin
- if T.Atas MaxElemen then
- writeln ( TUMPUKAN SUDAH PENUH )
- else
- begin
- T.Atas T.Atas 1
- T.IsiT.Atas X
- end
- end
1
2
8- Operasi POP
-
- procedure POP ( var T Tumpukan)
- begin
- T.Atas T.Atas - 1
- end
- procedure POP ( var T Tumpukan)
- begin
- if T.Atas 0 then
- writeln ( TUMPUKAN SUDAH KOSONG )
- else
- begin
- T.Atas T.Atas - 1
- end
- end
1
2
9PENULISAN UNGKAPAN NUMERIS DALAM STACK
- Salah satu aplikasi STACK adalah untuk menulis
ungkapan dengan menggunakan notasi tertentu. - Cara penulisan ungkapan dapat dilakukan dengan
menggunakan - 1. Notasi INFIX
- Operator diletakkan diantara 2 operand
- ex AB ? dimana A,B sbg operand dan sbg
operator - 2. Notasi PREFIX ( POLISH )
- Operator diletakkan sebelum 2 operand
disajikan - ex AB
- 3. Notasi POSTFIX ( SUFFIX )
- operator diletakkan setelah 2 operand
disajikan - ex AB
10- Dalam penulisan ungkapan, khususnya ungkapan
numeris seringkali digunakan tanda kurung u
mengelompokkan bagian mana yg harus dikerjakan
lebih dahulu. - Dalam ungkapan2 yg rumit, pemakaian tanda kurung
ini tidak bisa dihindari. - Semakin rumit ungkapan maka semakin banyak
dibutuhkan tanda kurung . - Hal ini membawa suatu konsekwensi bahwa penulisan
tanda kurung itupun harus benar2 terhindar dari
kesalahan. - Contoh ( dalam notasi infix ) DG METODE
SUBSTITUSI - 1. A B x C Notasi Prefix Notasi Postfix
- xBC ? 1 BCx ? 1
- A1 ? 2 A1 ? 2
- Latihan
- 2. (A B) x (C (D E))
- 3. (A x B) ( C D ) / ( E x ( F G ) )
1
2
11Algorithma Konversi dari Infix ke Postfix
- Langkah 0 ( Awal )
- - Baca ungkapan dalam notasi infix, misalnya S
- - Tentukan panjang ungkapan tersebut, misalnya N
karakter - - Siapkan sebuah tumpukan kosong siapkan
derajad masing2 operator, misalnya - pangkat bernilai 3
- x , / bernilai 2
- , - bernilai 1
- ) , ( bernilai 0
- Langkah 1
- Dimulai dari I1 sampai N, kerjakan langkah2
berikut - a. R S I
- b. Test nilai R, jika R adalah
- operand langsung ditulis
- kurung buka push ke dalam tumpukan
- kurung tutup pop dan tulis semua isi
tumpukan sampai ujung tumpukan (.
Pop juga tanda ( ini, tapi tidak usah
ditulis.
12- operator jika tumpukan kosong, atau derajad
R lebih tinggi dibanding derajad ujung
tumpukan, push operator ke dalam
tumpukan. Jika tidak, pop ujung tumpukan
da tulis, kemudian ulangi pembandingan R
ujung tumpukan. Kemudian R di push. - Langkah 2
- Jika akhir notasi infix telah tercapai, dan
tumpukan masih belum kosong, pop semua isi
tumpukan dan tulis hasilnya.
13- 1. ( A B ) x ( C D ) ? N 11 karakter
-
Proses ke Karakter dibaca ( R ) Isi Stack Karakter tercatat Notasi Postfix terbentuk
1 2 3 4 5 6 7 8 9 10 11 ( A B ) ( C - D ) ( ( Kosong ( -( Kosong A B C D - A AB AB ABC ABCD ABCD- ABCD-
14- ( K ( L M )) ( N O ) ? N 15 karakter
-
Proses ke Karakter dibaca Isi Stack Karakter tercatat Notasi Postfix terbentuk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ( K ( L M ) ( N - O ) ( ( ( ( ( ( ( ( ( ( Kosong ( ( ( kosong K L M N O - K KL KLM KLM KLM KLM N KLM NO KLM NO- KLM NO-
15- 2. (A B) (C D) E ? N 13 karakter
-
Proses ke Karakter dibaca ( R ) Isi Stack Karakter tercatat Notasi Postfix terbentuk
1 2 3 4 5 6 7 8 9 10 11 12 13 ( A B ) ( C - D ) E ( ( Kosong ( -( Kosong Kosong A B C D - E A AB AB ABC ABCD ABCD- ABCD- ABCD-E ABCD-E
16- Cara Substitusi Infix Postfix
- ( A x B ) x ( C D ) 1. AB 1. AB
- 2. C-D 2. CD-
- 3. 12 3. 12
- 4. ABCD-
- LATIHAN
-
- A B C D E
- (A B) ( C D ) / ( E ( F G ))
2
1
3
17Algorithma Konversi dari Infix ke Prefix
- Langkah 0 ( Awal )
- - Baca ungkapan dalam notasi infix, misalnya S
- - Tentukan panjang ungkapan tersebut, misalnya N
karakter - - Siapkan sebuah tumpukan kosong siapkan
derajad masing2 operator, misalnya - pangkat bernilai 3
- x , / bernilai 2
- , - bernilai 1
- ) , ( bernilai 0
- Langkah 1
- Dimulai dari IN sampai 1, kerjakan langkah2
berikut - a. R S I
- b. Test nilai R, jika R adalah
- operand langsung ditulis simpan ke var T
- kurung tutup push ke dalam tumpukan
- kurung buka pop dan tulis semua isi
tumpukan sampai ujung tumpukan ).
Pop juga tanda ) ini, tapi tidak usah
ditulis.
18- operator jika tumpukan kosong, atau derajad
R lebih tinggi atau sama dibanding
derajad ujung tumpukan, push
operator ke dalam tumpukan. Jika tidak,
pop ujung tumpukan dan tulis disimpan ke
var T, kemudian ulangi pembandingan R
ujung tumpukan. Kemudian R di push. - Langkah 2
- Jika akhir notasi infix telah tercapai, dan
tumpukan masih belum kosong, pop semua isi
tumpukan dan tulis hasilnya, kemudian simpan ke
var T. - Langkah 3
- Baca data dalam variabel T, dimulai dari N
sampai 1 dan tulis ke dalam notasi prefix.
19- ( A B ) x ( C D ) ? N 11 karakter
-
Proses ke Karakter dibaca ( R ) Isi Stack Karakter tercatat Isi Variabel T ( Notasi Postfix ) Notasi Prefix terbentuk
1 2 3 4 5 6 7 8 9 10 11 12 13 ) D - C ( ) B A ( ) -) Kosong ) ) Kosong D C - B A D DC DC- DC-B DC-BA DC-BA DC-BA AB-CD
20- SELESAIKAN
- (A B) (C D) E
- A B ( C D ) / ( E ( F G ) )
21Proses ke Karakter dibaca ( R ) Isi Stack Karakter tercatat Notasi Postfix terbentuk
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 ( ( P - Q ) R ) X ( S T ) / (( U / V ) W ) ( ( ( ( ( KOSONG KOSONG X ( X ( X KOSONG / ( ( / / ( ( / ( ( / KOSONG KOSONG P PQ - R S T U V / / W P PQ PQ- PQ-R PQ-R PQ-RS PQ-RST PQ-RST PQ-RST PQ-RSTU PQ-RSTUV PQ-RSTUV/ PQ-RSTUV// PQ-RSTUV//W PQ-RSTUV//W