Anda di halaman 1dari 20

Pertemuan 13 :

Stack (Tumpukan) &


Queue (Antrian)

Algoritma & Struktur Data


Eko Budiarto, S. Kom., MM.
Teknik Informatika – S1
Fakultas Teknik
Universitas Pelita Bangsa
Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Stack (Tumpukan)
1. Pengertian Stack

Stack merupakan sebuah kumpulan data yang diletakkan di atas data

lainya, seperti sebuah tumpukan. Dengan demikian, stack merupakan salah satu

struktur data yang menerapkan prinsip LIFO (Last In First Out). Dimana elemen

yang terakhir disimpan dalam stack, menjadi elemen yang pertama diambil.

Untuk meletakkan sebuah elemen pada bagian atas dari stack, maka dilakukan

operasi push. Sedangkan untuk memindahkan sebuah elemen dari tempat atas

tersebut dalam sebuah stack, maka dilakukan operasi pop.

Untuk menjelaskan pengertian di atas, kita ambil contoh sebagai berikut.

Misalnya kita mempunyai dua buah kotak yang kita tumpuk, sehingga kotak

kedua kita letakkan di atas kotak yang pertama. Jika kemudian tumpukan dua

Algoritma & Struktur Data – Eko Budiarto 1


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

buah kotak itu kita tambah lagi dengan kotak ketiga, keempat, dan seterusnya,

maka akan kita peroleh sebuah tumpukan kotak yang terdiri dari N kotak

Dari gambar di atas kita bisa mengatakan bahwa kotak B ada di atas kotak A dan

ada di bawah kotak C. Gambar berikutnya menunjukkan bahwa dalam tumpukan

kita hanya bisa menambah atau mengambil sebuah kotak lewat satu ujung, yaitu

bagian atas

2. Operasi Dasar pada Stack

• Push adalah operasi untuk memasukkan data tumpukan paling atas, dimana

penambahan dapat dilakukan jika stack itu belum penuh (full). Operasi ini

biasa dinyatakan dengan push (S, d). Dalam hal ini S menyatakan

stack dan d menyatakan data yang disisipkan ke stack S. Stack dikatakan

penuh jika posisi atas sudah berada pada posisi N.

( if S.atas = N then stack penuh)

Algoritma & Struktur Data – Eko Budiarto 2


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

• Pop adalah operasi untuk mengambil data dari tumpukan paling atas.

Operasi ini biasa dinyatakan dengan pop (S). dalam hal ini data teratas

di stack S akan dikeluarkan.

Operasi Penjelasan
Stack contoh = new Stack(); Membuat stack kosong

push (T, “Apel”); Apel dimasukkan terlebih


push (T, “Jeruk”); dulu, baru Jeruk.

pop (T); Jeruk dikeluarkan,


push (T, Jambu); kemudian Jambu
push (T, Nanas); dimasukkan, dan diikuti
Nanas
*T = Top

Selain operasi dasar push dan pop, berikut operasi/method lainnnya yang ada

pada sebuah struktur data stack :

• Peek, digunakan untuk melihat data yang berada di posisi paling atas

• Count, digunakan untuk mengetahui jumlah isi data pada Stack

• Clear, digunakan untuk mengapus seluruh data yang ada pada Stack

Algoritma & Struktur Data – Eko Budiarto 3


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Contoh :

misalkan ada data sebagai berikut : 1 3 5 6, maka data tersebut dapat tersimpan

dalam bentuk sebagai berikut :

Gambar. Asumsi-asumsi penyimpanan stack

Contoh lain adalah ada sekumpulan perintah stack yaitu push(5), push(7),

pop, push(3), pop. Jika dijalankan, maka yang akan terjadi adalah :

Gambar. Proses operasi stack

Algoritma & Struktur Data – Eko Budiarto 4


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Selain operasi dasar stack (push dan stack), ada lagi operasi lain yang dapat

terjadi dalam stack yaitu :

1. Proses deklarasi yaitu proses pendeklarasian stack.

2. Proses isempty yaitu proses pemeriksaan apakah stack dalam keadaan

kosong.

3. Proses isfull yaitu proses pemeriksaan apakah stack telah penuh.

4. Proses inisialisasi yaitu proses pembuatan stack kosong, biasanya dengan

pemberian nilai untuk top.

Representasi stack dalam pemrograman, dapat dilakukan dengan 2 cara yaitu :

1. Representasi stack dengan array

2. Representasi stack dengan single linked list

Sebagai contoh representasi kedua cara tersebut dengan operasi yang

dilakukan adalah push(1), push(2), pop, push(5), push(8), pos. Untuk lebih detail,

perhatikan gambar di bawah ini :

Algoritma & Struktur Data – Eko Budiarto 5


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Representasi stack dengan menggunakan array dengan maksimal data 5 adalah

? ? ? ? ? ? ?
? ? ? ? ? ? ?
? ? ? ? ? Top 8 X
? ? Top 2 X Top 5 5 Top 5
? Top 1 1 Top 1 1 1 1

Top=0 Top=1 Top=2 Top=1 Top=5


Top=8 Top=5
Maks=5 Maks=5 Maks=5 Maks=5 Maks=5
Maks=5 Maks=5
Kondisi Push(1) Push(2) Pop Push(5) Push(8) Pop
awal

Gambar. Representasi stack dengan menggunakan array

*Elemen berisi ? berarti nilai elemen tidak diketahui.

Algoritma & Struktur Data – Eko Budiarto 6


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Representasi stack dengan menggunakan single linked list

Gambar. Representasi stack dengan menggunakan single linked list

Algoritma & Struktur Data – Eko Budiarto 7


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Queue
Antrian (Queue) adalah struktur data yang mempunyai sifat yakni data

yang masuk duluan akan diproses lebih dahulu. Dengan kata lain, struktur data ini

mempunyai sifat yang dinamakan FIFO (First In First Out). Di dalam Antrian

dikenall istilah depan (Front) dan belakang (Rear).

Dapat kita perhatikan dari gambar di atas, bahwa queue memiliki limitasi

dalam storage-nya. Itulah kenapa disebut queue, yang berarti antrian. Yakni suatu

manajemen penyimpanan sementara untuk menunggu ketika value di depannya

sedang di proses. Dalam komputer pun juga ada antrian, namun karena kecepatan

proses sangat cepat, jadi seolah olah seluruh instruksi dijalankan bersama – sama.

Algoritma & Struktur Data – Eko Budiarto 8


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Dalam gambar tersebut juga dapat kita perhatikan terdapat empat istilah:

• Front : adalah kepala dari antrian (titik di mana antrian dimulai)

• Rear : adalah ekor dari antrian (titik akhir dari antrian)

• Enqueue : proses menambahkan satu value ke dalam antrian

• Dequeue : proses mengeluarkan satu value dari antrian

Dalam bidang Ilmu Komputer, antrian atau queue banyak digunakan

terutama dalam system operasi yang memerlukan manajemen sumber daya dan

penjadwalan. Contohnya time-sharing computer-system dimana ada sejumlah

pemakai yang akan menggunakan system tersebut secara serempak.

Operasi dasar dalam Antrian

• Insert, menyatakan operasi untuk memasukkan data ke dalam antrian. Operasi

ini biasa dinyatakan dengan insert (A, d) atau kadang disingkat

insert (d). dalam hal ini, A menyatakan Antrian dan d menyatakan item

data yang dimasukkan ke dalam antrian A. istilah enqueue terkadang

digunakan untuk menyatakan operasi pemasukan data ke dalam antrian.

• Remove, menyatakan operasi untuk mengambil data dari antrian. Operasi ini

biasa dinyatakan dengan remove (A) atau remove () saja. Dalam hal

ini, data yang berada di depan dalam antrian A akan dikeluarkan dan menjadi

Algoritma & Struktur Data – Eko Budiarto 9


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

nilai balik remove (). Itulah sebabnya, penggunaan remove dituangkan

dalam bentuk pernyataan data  remove (A)

Perlu diketahui, istilah dequeue terkadang digunakan untuk menyatakan

operasi pengeluaran data dari dalam antrian.

Algoritma & Struktur Data – Eko Budiarto 10


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

PENYAJIAN DARI ANTRIAN

Antrian dapat disajikan di dalam komputer dalam berbagai cara. Biasanya

dengan menggunakan one-way-list (linear linked list) ataupun menggunakan

array. Kalau tidak disebutkan lain, maka antrian kita sajikan dalam array

QUEUE, dengan dilengkapi dua variabel penunjuk. FRONT, berisi lokasi dari

elemen DEPAN antrian dan REAR, berisi lokasi dari elemen BELAKANG

antrian. Nilai FRONT = NULL menunjukkan bahwa antrian adalah hampa.

Gambar di bawah ini menunjukkan bagaimana menyajikan suatu antrian

dalam sebuah array QUEUE dengan N elemen. Gambar itu juga menunjukkan

bagaimana melakukan pemasukan dan penghapusan elemen antrian.

Algoritma & Struktur Data – Eko Budiarto 11


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Dapat kita lihat bahwa pada setiap kali penghapusan, nilai lokasi FRONT

akan bertambah 1. Untuk setiap kali pemasukan elemen, nilai REAR akan

bertambah 1. Hal ini berakibat bahwa setelah pemasukan elemen ke N (berawal

dari antrian hampa), maka lokasi QUEUE(N) telah diduduki. Di sini mungkin

saja tidak sebanyak N elemen ada dalam antrian (karena sudah dilakukan

beberapa penghapusan).

Untuk melakukan pemasukan berikutnya, yakni memasukkan elemen

ITEM, kita dapat menggunakan lokasi QUEUE(1). Demikian seterusnya. Dalam

hal ini, kita menggunakan array sirkular, yakni bahwa QUEUE(1) datang sesudah

QUEUE(N) di array dalam. Berdasarkan asumsi ini, maka REAR adalah 1.

Secara yang sama, jika FRONT = N dan kita akan melakukan penghapusan,

maka sekarang FRONT adalah 1, bukan N+l.

Algoritma & Struktur Data – Eko Budiarto 12


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Gambar berikut memperlihatkan antrian yang disimpan dalam array

dengan 5 lokasi memori sebagai array sirkular

Gambar - Circular Array

Algoritma & Struktur Data – Eko Budiarto 13


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

DEQUE

DEQUE adalah suatu linear list atau daftar linear, yang penambahan dan

penghapusan elemennya dapat dilakukan pada kedua sisi ujung list, tetapi tidak

dapat dilakukan di tengah-tengah list. Dari sini, kita boleh mengatakan bahwa

deque adalah suatu queue ganda atau double queue.

Ada banyak cara penyajian suatu deque di dalam komputer. Namun yang

biasa digunakan adalah penyajian dengan cara penempatan di dalam sebuah array

sirkular atau array putar DEQUE.

Di sini kita menggunakan dua pointer atau penunjuk, LEFT dan RIGHT,

yang berturut-turut menunjuk pada sisi kiri dan sisi kanan dari deque. Kita

senantiasa mengasumsikan bahwa elemen deque berurut dari kiri ke kanan.

Pengertian sirkular di atas timbul karena elemen DEQUE(l) berada sesudah

elemen DEQUE(N) dari array.

Gambar berikut menggambarkan 2 buah deque, masing-masing berisi 4

elemen, yang ditempatkan di dalam sebuah array dengan 8 lokasi memori.

Kondisi LEFT = NULL dipergunakan untuk menyatakan bahwa suatu deque

adalah hampa.

Selain deque dengan sifat yang telah kita sebutkan di atas, masih ada 2

model variasi deque. Kedua variasi tersebut adalah deque input terbatas, dan

deque output terbatas, yang merupakan tengah-tengah antara deque dan antrian.

Algoritma & Struktur Data – Eko Budiarto 14


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Deque input terbatas adalah suatu deque yang membatasi pemasukan

elemen hanya pada satu ujung dari list, sementara penghapusan elemen boleh

dilakukan pada kedua ujung list.

Deque output terbatas adalah suatu deque yang hanya memperbolehkan

penghapusan elemen pada salah satu ujung, tetapi memperbolehkan pemasukan

elemen pada kedua ujung list.

DEQUE

LEFT : 4
RIGHT : 6 AAA BBB CCC DDD
1 2 3 4 5 6 7 8
(a)

DEQUE
LEFT : 7
RIGHT : 2
YYY ZZZ WWW XXX
1 2 3 4 5 6 7 8

Gambar - Deque

Sama halnya dengan antrian, komplikasi dapat timbul dalam pemrosesan

deque, yakni apabila (a) terjadi overflow, yakni pada saat suatu elemen

dimasukkan ke dalam deque yang sudah berisi penuh, dan (b) terjadi underflow,

yakni bila suatu elemen harus dihapus dari deque yang sudah hampa.

Algoritma & Struktur Data – Eko Budiarto 15


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

ANTRIAN BERPRIORITAS

Sekarang kita bahas mengenai antrian berprioritas antrian berprioritas

adalah himpunan elemen, yang setiap elemennya telah diberikan sebuah prioritas,

dan urutan proses penghapusan elemen adalah berdasarkan aturan berikut :

1. Elemen yang prioritasnya lebih tinggi, diproses lebih dahulu

dibandingkan dengan elemen yang prioritasnya lebih rendah.

2. Dua elemen dengan prioritas yang sama, diproses sesuai dengan urutan

mereka sewaktu dimasukkan ke dalam priority queue.

Suatu prototipe dari antrian berprioritas adalah sistem time sharing. Di

sini pro-gram dengan prioritas yang lebih tinggi diproses terlebih dahulu, dan

sejumlah program dengan prioritas yang sama akan membentuk queue yang

standar.

Ada bermacam-macam cara penyimpanan antrian berprioritas di dalam

memori. Kita akan membahas dua di antaranya, yakni yang pertama kita

pergunakan cara penyimpanan dalam one-way list, dan yang kedua dengan cara

penyimpanan dalam multiple queue.

Kemudahan dan kesulitan di dalam operasi penambahan ataupun

penghapusan elemen, pada antrian berprioritas, akan tergantung pada penyajian

mana yang akan dipilih.

Algoritma & Struktur Data – Eko Budiarto 16


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

PENYAJIAN ONE-WAY LIST DARI ANTRIAN BERPRIORITAS

Satu cara untuk menyimpan antrian berprioritas dalam memori adalah

dengan menggunakan one-way list, dengan ketentuan seperti berikut ini :

1. Setiap simpul dalam list akan berisi 3 buah data atau field, yakni field

informasi yang biasa disebut INFO, Nomor prioritas (priority number)

disebut PRN, dan nomor link, disebut LINK.

2. Simpul X mendahului simpul Y di dalam list :

1) bila X mempunyai prioritas yang lebih tinggi dari pada Y

2) bila keduanya mempunyai prioritas yang sama, tetapi X dimasukkan

ke dalam queue terlebih dahulu sebelum Y.

Ini berarti bahwa urutan pada one-way list adalah berkorespondensi

dengan urutan pada antrian berprioritas. Priority number akan beroperasi seperti

cara yang biasa dipakai, yakni simpul dengan priority number terendah, akan

mendapat prioritas yang tertinggi.

Sebagai contoh, perhatikan Gambar di bawah yang memperlihatkan

diagram skematik dari antrian berprioritas dengan 7 elemen. Diagram tidak dapat

menceritakan kepada kita apakah BBB dimasukkan ke dalam list sebelum atau

sesudah DDD. Di lain pihak, diagram dapat memperlihatkan kepada kita, bahwa

BBB dimasukkan sebelum CCC, karena BBB dan CCC mempunyai priority

number yang sama dan BBB berada sebelum CCC di dalam list.

Algoritma & Struktur Data – Eko Budiarto 17


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

START

INFO PRN LINK


AAA 1 BBB 2 CCC 2

DDD 4 EEE 4 X

Gambar - Antrian berprioritas

Pada Gambar berikut diperlihatkan bagaimana cara antrian berprioritas

muncul dalam memori, dengan menggunakan array INFO, PRN, dan LINK.

Sifat utama dari penyajian one-way list dari sebuah antrian berprioritas

adalah bahwa elemen dalam antrian yang seharusnya diproses pertama kali selalu

muncul pada bagian permulaan one-way list. Oleh karena itu, adalah sangat

sederhana untuk menghilangkan dan memproses sebuah elemen antrian prioritas

kita tersebut.

Gambar - Pemetaan antrian berprioritas di memori

Algoritma & Struktur Data – Eko Budiarto 18


Fakultas Teknik - Program Studi Teknik Informatika Universitas Pelita Bangsa

Terimakasih
Eko Budiarto, S. Kom., M.M.
ekobudiarto@pelitabangsa.ac.id
0878.4405.5481

Algoritma & Struktur Data – Eko Budiarto 19

Anda mungkin juga menyukai