Anda di halaman 1dari 22

Materi Pertemuan 06

(Revisi)

STRUKTUR DATA

STACK (TUMPUKAN)

Rima Liana Gema, M.Kom


A. DEFINISI STACK

• Stack ( Tumpukan ) artinya tumpukan.

• Stack merupakan kumpulan data yang diletakan di atas


data lainnya.

• Stack ( Tumpukan ) dapat diartikan sebagai berikut :

Suatu kumpulan data yang seolah-olah ada data yg


diletakkan diatas data yg lain, yg bisa menyisipkan
(menambah) data serta mengambil (menghapus data).
B. PRINSIP KERJA STACK

• Prinsip kerja stack adalah LIFO (Last In First Out)


artinya data (elemen) yang terakhir masuk atau
disimpan dalam stack merupakan data (elemen) yang
akan keluar terlebih dahulu.

• Pada Stack, penambahan dan penghapusan elemennya


hanya dapat dilakukan pada satu posisi, yaitu posisi
akhir stack. Posisi ini disebut Puncak atau Top dari
stack.
Operasi yg dpt dilakukan dalam stack :
1. Meletakan data pada ujung atas stack
 push
2. memindahkan data dari ujung atas stack
 pop

maksudnya:
• Untuk menyisipkan / menambahkan sebuah elemen pada
bagian atas dari Stack, maka dilakukan operasi push.
• Sedangkan untuk Menghapus / mengeluarkan / memindahkan
sebuah elemen dari tempat atas tersebut dalam sebuah stack,
maka dilakukan operasi pop.

Perhatikan ilustrasi di samping ini


C. ILUSTRASI PRINSIP KERJA STACK

Misalkan anda mempunyai beberapa buku pelajaran yang


terdiri dari buku Matematika, Fisika, Biologi, Kimia dan
Bahasa Indonesia. Untuk menghemat ruang, anda
memasukan buku-buku tersebut ke dalam kotak (kotak
tersebut memiliki satu lubang di bagian atasnya untuk
memasukan buku-buku tersebut).

Anda memasukkan buku dengan urutan sebagai berikut:

1. Fisika, 2. Kimia, 3. Matematika, 4. Bahasa Indonesia, 5.


Biologi.
next
ILUSTRASI PRINSIP KERJA STACK (sambungan)

Karena besok merupakan jadwal


pelajaran Matematika dan andapun
harus belajar, maka untuk
mengambil buku Matematika, anda
harus mengeluarkan dulu buku
Biologi dan Bahasa Indonesia.
Sehingga buku Matematika baru bisa
diambil dan yang tersisa pada kotak
saat ini adalah buku Fisika dan
Kimia.
Contoh:
Jadi, kalau huruf yang kita masukkan secara
berturut-turut adalah “R”, “O”, “M”, dan “A”, maka
keluarannya adalah “A”, “M”, “O”, dan “R”.
Berikut ilustrasinya:
1. Membentuk stack: Create(S)

• Nama stack itu adalah “S” yang


disiapkan untuk 4 penampung data.
• Angka 1, 2, 3, dan 4 dimisalkan alamat
memorinya.
• Pada kondisi stack baru dibentuk ini,
perintah isempty(S) akan menghasilkan
jawaban “true”. Posisi tumpukan paling
atas (top) dan posisi tumpukan
terbawah (bottom) masih di 0.
2. Memasukkan data “R” pada stack: Push(S, “R”)

• Perintah memasukkan data push( ),


karena “R” merupakan data awal, maka
“R” diletakkan di posisi paling bawah (di
alamat 1).
• Karena stack sudah ada isinya, maka
perintah isempty(S) adalah “false”.
• Posisi tumpukan paling atas (top) = 1,
dan posisi tumpukan terbawah (bottom)
juga di 1.
3. Memasukkan data “O” pada stack: Push(S, “O”)
• Karena di stack sudah ada “R” maka “O”
akan dimasukkan (ditumpuk) di atas
“R”.
• Posisi tumpukan paling atas (top) = 2,
dan posisi tumpukan terbawah (bottom)
di 1

4. Memasukkan data “M” pada stack: Push(S, “M”)

• Karena di stack sudah ada “R” dan ”O”


maka “M” akan dimasukkan (ditumpuk)
M
di atas “O”.
• Posisi tumpukan paling atas (top) = 3,
dan posisi tumpukan terbawah (bottom)
di 1
5. Memasukkan data “A” pada stack: Push(S, “A”)

A
• Karena di stack sudah ada “R” , ”O” dan
”M” maka “A” akan dimasukkan
M
(ditumpuk) di atas “M”.
• Posisi tumpukan paling atas (top) = 4,
dan posisi tumpukan terbawah (bottom)
di 1

Perhatikan gambar di atas, diketahui bahwa keadaan


stack sudah penuh karena pada contoh (lihat slide 7,
keterangan ilustrasi no 1) diberitahukan bahwa stack
disiapkan untuk menampung 4 data (elemen) saja.
• Bila stack sudah penuh (pada contoh, top(S)) = 4, tetapi masih
ada perintah memasukkan data (push( )), maka akan muncul
berita kesalahan: “overflow error”.

• Kebalikan dari perintah memasukkan elemen ke dalam stack


adalah mengeluarkan. Perintah mengeluarkan adalah pop(S).
Bedanya, pada perintah pop(S) tidak ada elemen yang ditulis,
karena elemen yang akan dikeluarkan sudah pasti elemen yang
teratas (top), dan bila stack sudah dalam keadaan kosong (null)
atau isempty = “true” tetapi masih ada perintah pop(S) untuk
mengeluarkan elemen terhadap stack tersebut, maka akan
muncul berita kesalahan “underflow error”.

• Untuk lebih jelasnya maksud dari perintah pop(S) dimana kalo


kita membuat perintah pop(S) tidak ada elemen yang ditulis,
silahkan pehatikan dan analisa slide yang berikutnya!
Untuk lebih jelasnya maksud slide 7, perhatikan gambar di
bawah ini:

Kondisi awal Stack M Push ( S, “M” )


1 4
O
R

Pop ( S )
2 5
O
R Push ( S, “R” ) R

3 6
O Push ( S, “O” ) Pop ( S )
R R
Sambungan…

7
O Push ( S, “O” )
R

A Top

M Push ( S, “M” ) M
8 10
O O
R R Bottom

A Push ( S, “A” )

M
9
O
R
Latihan 1:

Gambarkan keadaan stack untuk 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 )

Lihat slide 12 cara menyelesaikan soal di atas!!!


Latihan 2:

Gambarkan keadaan stack untuk operasi berikut


dimana stack dapat menampung max 7 elemen
atau data.
a) Sebuah stack berisikan 4 buah bilangan ganjil,
dimana bilangan terkecil merupakan top of
stack
b) Tambahkan huruf K ditengah stack, kemudian
tambahkan huruf x dan y pada stack sehingga
x menjadi top of stack
c) Hapus 2 elemen dari bottom of stack, ganti
dengan angka 18 dan 30, dimana angka
terbesar merupakan bottom of stack
D. PENULISAN UNGKAPAN NUMERIS DALAM STACK
• Memberikan perintah atau instruksi kepada komputer harus
secara logis, komputer patuh dengan tata bahasa yang sudah
ditentukan (bahasa formal), dan komputer tidak memiliki hak
inisiatif atau kebijakan, selama komputer tidak dirancang untuk
itu.

• Ketika kita memerintah komputer untuk melaksanakan operasi


matematis A + B, yang dibaca “A ditambah B”. Perintah tersebut
lebih sulit dimengerti dibandingkan dengan pernyataan “A dan
B ditambahkan” atau “tambahkan A dan B” karena dua nilai
sudah diberikan, baru si komputer operasikan, atau komputer
akan mengoperasikan dua nilai yang akan diberikan.
• Belum lagi jika ekspresi itu misalnya a * b / ( c – d) ^ e, kita
sulit membuat algoritma agar komputer bisa mengerjakan
ekspresi itu sesuai dengan kaidah matematisnya, yaitu (1)
yang ada di dalam tanda kurung dikerjakan terlebih dulu, (2)
selanjutnya tanda pangkat , (3) selanjutnya tanda kali atau
bagi, mana yang lebih kiri dikerjakan terlebih dulu, dan (4)
baru akhirnya mengerjakan tanda tambah atau kurang,
mana yang paling kiri dikerjakan terlebih dulu. Belum lagi
jika ada tanda kurung di dalam tanda kurung dan
sebagainya.
• Jadi, umumnya stack digunakan untuk mengalihkan
ekspresi matematis yang umum digunakan manusia (infix),
menjadi ekspresi matematis yang khusus untuk
mempermudah algoritma dalam memerintah komputer, yaitu
postfix atau prefix.
E. EKSPRESI MATEMATIS: INFIX, POSTFIX dan PREFIX

• Ekspresi matematis infix adalah ekspresi yang biasa digunakan


oleh manusia, di mana didalamnya terkandung derajat
(tingkatan) pengerjaan, mana yang lebih dulu dan mana yang
dikerjakan berikutnya.

• Seperti, 5 + 8 * 2 hasilnya adalah 21, bukan 26, karena derajat


perkalian lebih tinggi dari derajat penambahan, sehingga
perkalian harus dikerjakan terlebih dulu, baru penambahan.

• Berbeda jika ditulis menggunakan tanda kurung seperti ( 5 + 8 )


* 2 yang hasilnya 26, karena derajat tanda kurung lebih tinggi
dari derajat perkalian. Jika tanda kurungnya semakin banyak,
maka urutan pengerjaannya juga akan menjadi lebih rumit.
Misalnya (5*(6-2/(8+4)^3-5)+7)

• Pada prefix dan postfix sama sekali tidak menggunakan tanda


kurung, dan kita tidak perlu memikirkan derajat pengerjaannya,
semua dilakukan dari kiri ke kanan. disinilah fungsi dari stack
diberlakukan.

• Untuk ekspresi matematis A + B, operand-operandnya adalah A


dan B, sedangkan operatornya adalah +.

• Perhatikan gkedua gambar di bawah ini untuk membedakan


operator dan operand:
E. EKSPRESI MATEMATIS: INFIX, POSTFIX dan PREFIX

• Yang biasa kita gunakan untuk menuliskan ekspresi matematis


dalam kehidupan sehari-hari adalah ekspresi infix. Dikatakan infix
karena operatornya berada di dalam (di antara) kedua
operandnya.

• Selain infix, ada ekspresi matematis postfix dan prefix. Dikatakan


postfix karena operatornya ada di belakang kedua operandnya
(contoh: A B +), sedangkan ekspresi matematis prefix,
operatornya berada di depan kedua operandnya (contoh: + A B).

• Untuk lebih jelasnya, perhatikan gambar di bawah ini:


See You Next Week!!!

INFIX, POSTFIX dan PREFIX

Anda mungkin juga menyukai