Anda di halaman 1dari 7

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, Sari N.Y 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

Mata Kuliah Struktur Data, Sari N.Y Hal 2 dari Halaman 7


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
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.

Mata Kuliah Struktur Data, Sari N.Y Hal 3 dari Halaman 7


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
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;

Mata Kuliah Struktur Data, Sari N.Y Hal 4 dari Halaman 7


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

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.

Mata Kuliah Struktur Data, Sari N.Y Hal 5 dari Halaman 7


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 yang di scan 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
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 (-)

Mata Kuliah Struktur Data, Sari N.Y Hal 6 dari Halaman 7


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

Hasilnya :

Mata Kuliah Struktur Data, Sari N.Y Hal 7 dari Halaman 7

Anda mungkin juga menyukai