Anda di halaman 1dari 4

PERTEMUAN 13

STACK DAN QUEUE

A. TUJUAN PEMBELAJARAN
Setelah mempelajari materi pertemuan 13, mahasiswa mampu:
1.1 Mahasiswa dapat memahami Definisi Stack
1.2 Mahsaiswa dapat memahami Operasi Push dan Pop
1.3 Mahasiswa dapat memahami Definisi Queue
1.4 Mahasiswa dapat Implementasi Queue

B. URAIAN MATERI
1.1 Pengenalan Stack
Secara sederhana stack atau tumpukan bias diartikan sebagai kumpulan data yang seolah-
olah diletakkan di atas data yang lain. Satu hal yang perlu diingat bahwa kita bisa menambah
(menyisipkan) data dan mengambil (menghapus) data melalui ujung yang sama, yang disebut
sebagai ujung atas stack.
Secara sederhana, sebuah stack bisa diillustrasikan seperti gambar dibawah ini :
F atas
E
D
C
B
A

Dari gambar diatas, bisa di lihat bahwa kotak B terletak di atas kotak A dan di bawah
kotak C. Kotak D terletak diatas kotak C, kotak E terletak diatas kotak D dan seterusnya sampai
kotak terakhir. Dari gambar diatas menunjukkan bahwa kotak lewat satu ujung, yaitu bagian atas.
Apabila ada kotak lain yang akan disisipkan, maka kotak tersebut akan diletakkan diatas kotak F,
dan jika ada kotak yang akan diambil, maka kotak F yang pertama yang akan diambil.
Ada 2 operasi dasar yang bisa dilaksanakan pada sebuah stack, yaitu operasi
menyisipkan data (push) dan operasi menghapus data (pop).

1.2 Operasi Push dan Pop


Operasi push digunakan untuk memasukkan data ke dalam stack Untuk lebih jelasnya
perhatikan ilustrasi berikut ini. Misalkan kita mempunyai data-data 3, 25 dan 9 dalam stack
dengan posisi 3 paling bawah dan 9 paling atas. Dan kita akan memasukkan data 34 ke dalam
stack tersebut. Tentu saja data 34 akan diletakkan diatas data 9.
Push (34)

34

9 9

25 25

3 3

Prosesnya dari opersi push dapat dilihat pada penggalan program berikut ini :
Procedure PUSH (var T : Tumpukan; X : integer);
begin
if T.Atas = MaxElemen then
writeln (‘TUMPUKAN SUDAH PENUH’)
else
begin
T.Atas := T.Atas + 1;
T.Isi[T.Atas] := X
end
end;

Operasi pop adalah operasi untuk menghapus elemen yang terletak pada posisi paling
atas dari sebuah tumpukan. Sama halnya dengan operasi push, maka dengan deklarasi
tumpukan seperti diatas, prosedur untuk operasi pop bisa dengan mudah kita
implementasikan, yaitu :
Procedure POP (var T : Tumpukan);
begin
if T.Atas = 0 then
writeln (‘TUMPUKAN SUDAH KOSOSNG’)
else
T.Atas := T.Atas – 1
end;

1.3 Definisi Queue.


Queue merupakan suatu struktur data linier. Konsepnya hampir sama dengan stack,
perbedaannya adalah operasi penambahan dan penghapusan pada ujung yang berbeda.
Penghapusan dilakukan pada bagian DEPAN (FRONT) dan penambahan dilakukan pada
bagian BELAKANG (REAR). Elemen-elemen didalam queue dapat bertipe data integer, real,
record dalam bentuk sederhana atau terstruktur.
Queue disebut juga “waiting line” yaitu penambahan elemen baru dilakukan pada BELAKANG
dan penghapusan elemen dilakukan pada bagian DEPAN. Sistem pengaksesan pada data queue
menggunakan sistem FIFO, artinya elemen yang pertama masuk itu akan keluar pertama dari
queue. Implementasi queue dapat ditemukan antara lain :
a. Penjualan karcis kereta api, bioskop
b. Penjadualan pencetakan (spooling system)
c. Penjadualan pemakaian CPU, pada clien server.
d. Pemakaian jalur I/O (input/output) pada sistem komputer
e. Penyimpanan barang di Apotik, dll.

Posisi Depan

Posisi
Belakang

1.4 ImplementasI Queue


a. Kamus Data Queue
Sebelum struktur data ini bisa digunakan, harus dideklarsikan dahulu dalam bentuk
kamus data. Ada beberapa cara mendeklarasikan struktur data ini, salah satunya adalah
dengan menggunakan tata susunan linier (larik) dan dua buah variabel yang dikemas
dalam tipe data record

b. Operasi Dasar Queue


Operasi-operasi dasar yang dapat diterapkan adalah sebagai berikut :
 CreateQueue(Q) : Membuat queue baru Q, dengan jumlah elemen kosong
 MakeNullQ(Q) : Mengosongkan queue Q, jika ada elemen maka semua elemen
dihapus.
 EmptyQ : Queue kosong ?, menguji apakah queue Q kosong
 FullQ : Antian penuh?, menguji apakah queue Q penuh
 TambahQ(a,Q) : Memasukkan elemen baru x kedalam queue
 Ambil (Q,x) : Mengeluarkan elemen depan pada queue Q
c. Sirkuler Queue
Pada queue diatas perlu dilakukan penggeseran untuk menghindari sela kosong didepan
queue, agar queue bisa diisi kembali. Dengan queue sirkuler penggeseran tidak perlu
dilakukan. Berikut ilustrasi mengenai queue sirkuler.

1 2 3 4 5 6 7 8

Atrian sirkuler, prinsipnya sama dengan queue biasa, untuk mempermudah penggambaran
lajur linier digambarkan dalam bentuk lingkaran. Untuk penambahan elemen baru pada
queue sirkulasi ini, jika BELAKANG = MaksQ = 8, maka BELAKANG diset menjadi 1
(bila queue belum penuh)
Berikut persamaan dan beberapa perbedaan sirkulasi sirkuler :
 Kamus data queue sirkuler sama dengan queue biasa
 Kondisi kosong, 1 elemen dan penuh
No KONDISI
1 Kosong DEPAN = 0 dan BELAKANG = 0
2 1 elemen DEPAN = NELAKANG dan DEPAN <>0
3 Penuh DEPAN = 1 dan BELAKANG = MaksQ atau
DEPAN – BELAKANG = 1

d. Representasi Queue
Didalam komputer suatu queue biasanya direpresentasikan dalam bentuk array
queue dari dua variabel pointer FRONT (lokasi elemen depan) dan REAR
(lokasi elemen belakang). Keadaan FRONT = Null menunjukkan queue kosong.
Jika suatu elemen dihapsu dari queue, harga REAR bertambah satu.

C. LATIHAN/TUGAS
1. Buatlah salah satu contoh program sederhana dari STACK ATAU QUEUE dan
jalankan di program java, dengan ketentuan sebagai berikut?
 Buat Project ditulis dengan (PSD_NamaAnda_NIM)
 Buat Package ditulis dengan (NamaAnda_Kelas)
 Buat Class Java, Ditulis (ContohStack/Queue)
 Hasil Program di ScreenShoot/Capture

D. REFERENSI
 Munir Algortitma, dan Struktur data dalam bahasa java, Adi Nugroho, Penerbit Andi
Offset, Yogyakarta, 2008
 CRC Algoritm and Data Structure inC++, Alan Parker, CRC Press, 1993
 Konsep dan Implementasi Struktur Data, Teddy Agus, Agus Projono, Penerbit
Informatika, Bandung, 2006.

Anda mungkin juga menyukai