0% menganggap dokumen ini bermanfaat (0 suara)
322 tayangan6 halaman

Bab 3 Stack

Stack adalah struktur data linier khusus dimana penambahan dan penghapusan elemen hanya dapat dilakukan pada posisi akhir. Stack mempunyai sifat LIFO (Last In First Out) dan digunakan untuk menyelesaikan berbagai masalah seperti matching kurung dan konversi notasi aritmatika.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
322 tayangan6 halaman

Bab 3 Stack

Stack adalah struktur data linier khusus dimana penambahan dan penghapusan elemen hanya dapat dilakukan pada posisi akhir. Stack mempunyai sifat LIFO (Last In First Out) dan digunakan untuk menyelesaikan berbagai masalah seperti matching kurung dan konversi notasi aritmatika.
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai DOC, PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 6

STACK (TUMPUKAN)

Daftar Linear (Linier List) adalah suatu struktur data yang merupakan himpunan
terurut dari satuan data atau dari record.
Elemen yang terdapat dalam daftar disebut simpul / node.
Daftar disebut Linier karena elemen nampak seperti baris , bahwa setiap simpul
(kecuali simpul pertama dan terakhir) selalu memiliki elemen penerus langsung
(suksesor) dan elemen pendahulu langsung (predesor).
Didefinisikan suatu Linier List A yang terdiri dari T buah elemen maka
notasinya :
A = [A1, A2, A3 ,..., AT]
Jika T = 0 maka A dikatakan sebagai Null List (List Hampa)
Suatu elemen dapat dihapus (delete) dari sembarang posisi linier list, dan suatu
elemen baru dapat pula disisipkan (insertion) sebagai anggota list pada posisi
sembarang.
Suatu linier list dapat berkurang atau bertambah setiap saat.
Contoh : File merupakan linier list yang elemen-elemennya berupa record.

STACK (TUMPUKAN)

Stack adalah suatu bentuk khusus dari linier list dimana proses penyisipan atau
penghapusan elemen-elemennya hanya dapat dilakukan pada satu posisi saja
yaitu pada posisi akhir file.
Posisi ini disebut Puncak atau TOP dari suatu Stack.
* Elemen teratas (puncak) dari stack dinotasikan sebagai TOP(S)
Untuk Stack S, dimana S = [S1, S2, S3, ..., ST], maka TOP(S) = ST
* Jumlah elemen-elemen di dalam stack dinotasikan sebagai NOEL(S)
Untuk stack diatas NOEL(S) = T
NOEL(S) menghasilkan nilai integer
Stack mempunyai sifat LIFO (Last In First Out) atau Terakhir Masuk
Pertama Keluar.

Mata Kuliah Struktur Data Hal 1 dari Halaman 7


Setiap elemen tidak dapat di keluarkan (POP keluar) sebelum semua elemen di
atasnya dikeluarkan.
OPERASI PADA STACK
Ada 4 operasi pada stack :
1. CREATE (STACK)
Operator yang menyebabkan stack S menjadi suatu stack hampa

2. ISEMPTY(S)
Operator unruk menentukan apakah suatu stack S hampa atau tidak
Operandnya adalah data bertipe stack
Hasilnya merupakan data bertipe Boolean

3. PUSH(elemen,stack)
Operator menambahkan satu satu elemen ke dalam stack

4. POP(S)
Operator untuk mengeluarkan satu elemen dari stack

DEKLARASI STACK DALAM BAHASA PEMROGRAMAN


Stack amat luas penggunaannya, banyak bahasa pemrograman tidak
mempunyai type data stack secara built in.
Jadi pemrogram harus memanipulasi sendiri fasilitas yang dimiliki bahasa
pemrograman tersebut, untuk dapat melakukan operasi stack terhadap variabel
stack.
Cara yang paling sederhana membentuk stack dalam bentuk semacam array .
Tetapi antara stack dan array terdapat banyak perbedaan anatara lain :

ARRAY STACK
1. Homogen 1. Heterogen
2. Elemennya hingga/ada batas 2. Bisa tak berhingga
atas 3. Bisa berubah-ubah
3. Jumlah elemennya tetap

Mata Kuliah Struktur Data Hal 2 dari Halaman 7


Stack dalam bentuk array :
1. Bersifat statis / kapasitasnya tetap
2. Elemennya harus homogen
3. Batas maksimum jumlah elemen harus dibatasi
4. Jumlah memori yang digunakan tetap, baik jika stack penuh atau stack
kosong.
5. Semakin besar ukuran array yang dialokasikan untuk stack, maka
kemampuan stack untuk menampung informasi semakin besar, tetapi
semakin besar juga ketidakpastian memori itu jika stacknya hanya memuat
sedikit informasi.
6. Penuh satck tergantung pada ukuran array yang dialokasikan mula-mula
untuk merealisasikan stack itu.

Operasi PUSH dan POP dapat kita program sebagai berikut :


Variabel S : yang bertipe data stack.
Variabel TOP-PTR : menyatakan index dari elemen TOP(S) dari stack.
EON : menyatakan elemen yang di PUSH ke dalam S
EOFF : menyatakan elemen yang di POP ke luar S
NOEL-MAX : panjang maksimum stack
Dalam PASCAL
Type Stack_Struct;
Record Stack : Array [1..100] of integer,
Toppptr : integer;
End;
Var S : Stack_Struct;

Procedure PUSH(Eon : integer);


Begin
If (S.Topptr <Noelmax) then
Begin

Mata Kuliah Struktur Data Hal 3 dari Halaman 7


S.Topptr := S.Topptr + 1;
S.Stack[S.Topptr] := Eon
End
Else Overflow_Condition
End;

Procedure POP(Eoff : integer0


Begin
If (S.Topptr >0) then
Begin
Eoff := S.Stack[S.Topptr];
S.Topptr := S.Topptr - 1
End
Else Underflow_Condition
End;

Catatan :
Overflow : suatu keadaan dimana kita melakukan operasi PUSH terhadap stack
dalam keadaan penuh.
Underflow : keadaan dimana kita melakukan operasi POP terhadap stack
kosong.

APLIKASI STACK
Digunakan untuk menyelesaikan berbagai macam masalah
Misal : kompiler, sistem operasi, program aplikasi.
Contohnya:
Matching Parentheses ( Penjodohan Tanda Kurung)
Proses dilakukan kompiler untuk memeriksa tanda kurung yang terdapat pada
suatu ekspresi artimatika.

NOTASI POSTFIX

Mata Kuliah Struktur Data Hal 4 dari Halaman 7


Salah satu aplikasi dari stack adalah
Untuk melakukan konversi dari suatu ungkapan artimatik dalam bentuk Infik
ke dalam ungkapan dalam bentuk Postfix.
Ungkapan aritmatik terdiri atas operator (+, -, /, *, ^), operand dan pembatas
(blank) dan umumnya ditulis dalam Notasi Infix .
Notasi Infix : setiap operator terdapat di antara dua operand.
Contoh : A + B * C / (D + E)
Notasi Postfix : kedua operand tampil bersama di depan operator.
Misal : AB+ atau PQ*

Notasi postfix digunakan oleh kompiler untuk menyatakan suatu ekspresi


aritmatik dalam bahasa tingkat tinggi (High Level Language).
Kompiler lebih mudah menangani dalam notasi Postfix.

Algoritma untuk mengubah Notasi Infix ke dalam Notasi Postfix

Eksprersi diamati satu persatu dari kiri ke kanan.


Pada algoritma ada 4 aturan dasar :
1. Jika simbol adalah "(" , maka simbol tersebut di PUSH ke dalam stack.
2. Jika simbol adalah ")' , seluruh isi stack di POP keluar mulai dari simbol "("
yang pertama ditemukan dalam stack.
3. Jika simbol yang discan adalah operand, maka simbol tersebut langsung
sebagai output.
4. Jika simbol adalah operator, maka dilakukan pembandingan dulu dengan
simbol operator yang berada pada posisi TOP dalam stack.
a. Jika derajatnya setara atau lebih rendah dari simbol yang berada pada
posisi TOP, maka TOP stack di POP keluar sebagai Output dan simbol
yang baru di PUSH ke dalam stack.
b. Jika derajatnya lebih tinggi dari simbol yang berada pada posisi TOP, maka
simbol (operator ) yang di scan tersebut di PUSH ke dalam stack

Mata Kuliah Struktur Data Hal 5 dari Halaman 7


Biasanya diakhir operasi ditambah simbol ";" (titik koma), jika dalam keadaan ini
maka POP semua elemen stack, sehingga stack hampa.

Urutan prioritas dari operator :


1. Perpangkatan (^)
2. Perkalian (*) atau Pembagian (/)
3. Penjumlahan (+) atau Pengurangan (-)

Contoh : (( A + B ) * C / D + E ^ F ) / G
Urutan 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
Proses
Simbol yang ( ( A + B ) * C / D + E ^ F ) / G ;
diamati
TOP ( ( ( + + ( * * / / + + ^ ^ / /
Stack ( ( ( ( ( ( ( ( ( + +
( ( ( (

Output A B + C * D / E F ^+ G /

Hasilnya : AB + C * D/ E F ^ + G /

Mata Kuliah Struktur Data Hal 6 dari Halaman 7

Anda mungkin juga menyukai