Anda di halaman 1dari 18

1

BAB I
PENDAHULUAN

1.1. Latar Belakang
Matematika merupakan program studi pertama di fakultas Matematika dan Ilmu
Pengetahuan Alam Universitas Lambung Mangkurat Banjarbaru. Saat ini, program
studi Matematika memiliki lima bidang keahlian diantaranya yaitu Statistik, Terapan,
Aljabar, Analisis dan Komputasi. Sepertihalnya jenjang pendidikan lain di dunia, suatu
fakultas berhubungan erat dengan mahasiswa dan dosen. Berjalan atau tidakny suatu
fakultas, program studi maupun bidang keahlian tergantung dengan mahasiswa dan
dosen.
Struktur Data merupakan salah satu mata kuliah dari bidang keahlian Komputasi.
Mata kuliah ini cukup banyak diminati oleh mahasiswa terutama mahasiswa program
studi Matematika. Mata kuliah ini pula biasanya ditawarkan pada semester genap yang
materinya meliputi : Pointer, List, Rekursi, Sorting, Stack, Queue, dan Searching.
Di tahun 2014 ini, mata kuliah Sruktur Data diminati oleh 36 mahasiswa dengan
dosen pengajar pak Onie Sosanto, S.Si, M.Si dan pak Yusuf, S.Si, M.Kom. Mengingat
kuliah struktur data jadwalnya siang sehingga kelihatannya kurang efisien maka ketika
kuliah dengan pak Yusuf, beliau berinisiatif membagi kelompok diskusi supaya
kuliahnya tidak mengantuk, lebih fokus dan aktif. Kelompok diskusi yang dibagi
menjadi 6 kelompok dengan pokok materi yang dibahas yaitu tentang Stack, Queue dan
Searching. Pembahasan pertama tentang Stack (Array dan Pointer), kedua tentang
Queue (Konsep dasar dan Implementasi), ketiga tentang Queue (Queue lingkaran),
keempat tentang Searching (Sequential dan Binary), kelima tentang Searching (Hash
Search) dan keenam membahas tentang Searching (Binary). Setiap kelompok
mempunyai pokok bahasan masing-masing yang mana pokok bahasan tersebut dibagi
dengan system lotrei. Dengan demikian, atas dasar inilah pada saat diskusi kami dari
kelompo kempat membahas tentang konsep dasar dan implementasi Queue.



2

1.2. Rumusan Masalah
Berdasarkan latar belakang di atas, maka rumusan masalah yang akan dibahas
dalam makalah ini yaitu sebagai berikut :
a) Apa yang dimaksud dengan Queue ?
b) Bagaimana karakteristik dan penggunaan Queue?
c) Bagaimana bentuk operasi-operasi Queue dan contoh pengaplikasian
operasinya ?
d) Seperti apakah implementasiannya?


1.3. Batasan Masalah
Masalah yang kami bahas dalam makalah ini yaitu
a) Menjelaskan pengertian Queue
b) Menjelaskan karakteristik dan penggunaan Queue
c) Menjelaskan bentuk operasi-operasi Queue dan contoh pengaplikasian Queue
d) Menjelaskan implementasi Queue


1.4. Tujuan
Pembuatan makalah ini bertujuan untuk mengetahui konsep-konsep dasar mengenai
Queue yang meliputi pengertiaan queue, karakteristik dan penggunaannya, bentuk
operasi dan pengaplikasiannya serta implementasiannya.


1.5. MetodePenulisan
Adapun metode penulisan makalah ini yaitu menggunakan metode deduktif yang
mana data dan informasi yang ditulis merupakan kesimpulan dari kesamaan informasi
atau data beberapa referensi yang kami dapatkan dari berbagai sumber di media sosial
yaitu internet dan media cetak berupa buku bahan ajar.


3

BAB II
PEMBAHASAN

2.1. Pengertian Queue
Queue merupakan suatu struktur data linier list. Queue juga merupakan suatu
kumpulan data yang apabila elemen ditambah maka penambahannya berada di posisi
belakang atau hanya diperbolehkan pada salah satu sisi belakang (rear) dan jika dilakukan
pengambilan elemen atau penghapusan (intersection) maka akan dilakukan pada elemen
paling depan (front). Elemen-elemen pada queue dapat bertipe integer, real, dan record
dalam bentuk sederhana atau terstruktur.
Pada Queue, tumpukan disebut juga Waiting Line yaitu penambahan elemen baru
dilakukan pada bagian belakang dan penghapusan elemen dilakukan pada bagian depan.
Sistem pengaksesan pada Queue menggunakan sistem FIFO (First In First Out), artinya
elemen yang pertama kali masuk yang akan pertama kali dikeluarkan dari Queue.
Contohnya: Queue Q = ( a
1
, a
2
, a
3
,a
n
), maka
1. Elemen a
1
adalah elemen paling depan.
2. Elemen a
i
adalah diatas elemen a
i-1
, di mana 1< i <n.
3. Elemen a
n
adalah elemen paling belakang.
Head (atau front) menunjuk keawal antrian Q (elemen terdepan), sedangkan tail (
rear) menunjuk akhir antrian Q (elemen paling belakang). Disiplin FIFO pada Queue
berimplikasi jika elemen A, B, C, D, E dimasukkan ke Queue, maka penghapusan atau
pengambilan elemen akan terjadi dengan urutan A, B, C, D, E.
Queue jika diartikan secara harfiah berarti antrian. Queue merupakan salah satu
contoh aplikasi dari pembuatan double linked list yang cukup sering kita temui dalam
kehidupan sehari-hari, misalnya saat anda mengantri diloket untuk membeli tiket. Istilah
yang cukup sering dipakai apabila seseorang masuk dalam sebuah antrian adalah enqueue.
Sedangkan istilah yang sering dipakai bila seseorang keluar dari antrian adalah dequeue.



4

2.2. Karakteristik Queue
Karakteristik pada Queue (antrian) adalah sebagai berikut.
1. Elemen antrian yaitu item-item data yang terdapat di elemen antrian.
2. Head (front) yaitu elemen terdepan dari antrian.
3. Tail (rear) yaitu elemen terakhir dari antrian.
4. Jumlah elemen pada antrian (count).
5. Status atau kondisi antrian.
Kondisi antrian yang menjadi perhatian adalah :
Penuh
Bila elemen di antrian mencapai kapasitas maksimum antrian. Pada kondisi ini,
tidak mungkin dilakukan penambahan keantrian. Penambahan elemen
menyebabkan kondisi kesalahan Overflow.
Kosong
Bila tidak ada elemen di antrian. Pada kondisi ini, tidak mungkin dilakukan
pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi
kesalahan Underflow.


2.3. Pengunaan Queue
Meski Queue sangat sederhana, namun Queue merupakan kakas dasar penyelesaian
masalah-masalah besar. Penggunaan Queue yang utama adalah untuk simulasi fenomena
antrian di dunia nyata, serta fenomena antrian di pengolahan data.
Penggunaan Queue dapat dicontohkan seperti dibawah ini :
Simulasi antrian di dunia nyata, antara lain :
Antrian pembelian tiket di depan loket untuk bis, kereta api, bioskop.
Antrian mobil di depan gerbang jalan tol.
Antrian kendaraan di jalanan umum.
Antrian menunggu di suatu bank
Sistem produksi
Barisan bahan atau komponen yang akan diproses suatu mesin.
Barisan bahan atau komponen yang akan diproses suatu manusia.
5

2.4. Operasi Operasi pada Queue
Operasi-operasi pokok (dasar) pada Queue adalah sebagai berikut.
1. Create Queue (Q)
Create Queue (inisialisasi) yaitu suatu operasi untuk membuat antrian baru Q dengan
jumlah elemen kosong dan menginisialisasi (menunjukkan) suatu antrian.
2. EnQueue (Push)
Enqueue (addQueue) merupakan suatu operasi untuk memasukkan data atau sebuah
elemen X kedalam queue sebagai elemen akhir di Q.
3. DeqQueue(Pop)
DeqQueue (removeQueue) merupakan suatu operasi yang digunakan untuk
mengambil sebuah elemen X dari antrian Q atau menghapus elemen terdepan dari
antrian.
Operasi-operasi pengaksesan tambahan pada Queue adalah sebagai berikut.
1. HeadQueue (Q)
HeadQueue (FrontQueue) merupakan suatu operasi untuk mengembalikan atau
mengirim elemen yang ada paling depan dari antrian tanpa menghapusnya.
2. TailQueue (Q)
TailQueue (RearQueue) merupakan suatu operasi untuk mengirim elemen yang ada
di rear tanpa menghapusnya.
Operasi-operasi Queue tambahan yang dapat dilakukan adalah sebagai berikut.
1. IsEmpty
IsEmpty Queue merupakan suatu operasi yang digunakan untuk mengecek atau
memeriksa apakah antrian Q dalam keadaan kosong atau penuh berisi data.
2. IsFull
IsFull Queue merupakan suatu operasi untuk mengecek atau memeriksa apakah
antrian penuh atau masih bisa menampung data dengan cara mengecek apakah
jumlah queue sudah sama dengan MAX_QUEUE atau belum.
3. IsOverflow
IsOverflow Queue (Q) merupakan suatu operasi untuk mengirim dan mengecek
apakah antrian Q telah mengalami overflow.

6

4. IsUnderflow
IsUnderflow Queue (Q) merupakan suatu operasi untuk mengecek atau memeriksa
apakah antrian Q mengalami underflow.
Operasi-operasi terhadap seluruh antrian Q antaralain sebagai berikut.
1. SizeQueue
SizeQueue (Q) merupakan suatu operasi untuk mengetahui jumlah elemen di antrian
Q.
2. IsEqual
IsEqual Queue (Q1, Q2) merupakan suatu operasi untuk mengirim atau mengecek
apakah antrian Q1 dan Q2 sama isinya.
Jumlah operasi pokok Queue tidak banyak. Dengan demikian, sangat sederhana
untuk menyatakan apapun mengenai implementasinya.Sebagai contoh dapat kita lihat
antrean (Q1, Q2,...,QN). Kita notasikan bagian depan dari antrean Q sebagai FRONT (Q)
dan bagian belakang sebagai REAR(Q).Jadi untuk antrean Q = [Q1, Q2, , QN] : FRONT
(Q) = Q1 dan REAR (Q) = QN. Kita menggunakan notasi NOEL (Q) untuk menyatakan
jumlah elemen di dalam antrean Q. NOEL (Q) mempunyai harga integer. Untuk antrean Q
= [Q1,Q2,, QN], maka NOEL (Q) = N.
Operator penyisipan (insertion) disebut INSERT dan operator penghapusan (deletion)
disebutREMOVE.
Sebagai contoh untuk memperjelas bekerjanya antrean, kita perhatikan sederetan
operasi berikut ini. Kita mulai dengan antrean hampa Q. Antrean hampa Q, atau Q[ ] dapat
disajikan seperti terlihat pada Gambar 4.1
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Gambar 4.1.Antreanhampa
Di sini :
NOEL(Q) = 0
FRONT(Q) = tidakterdefinisi
REAR(Q) = tidakterdefinisi
Lalukita INSERT elemen A, diperoleh Q = [A], sepertiterlihat di Gambar 4.2.

7

- - - - - - - - - - - - - - - - - -
A
- - - - - - - - - - - - - - - - - -
Gambar 4.2.Elemen A dimasukkan
Di sini :
NOEL(Q) = 1
FRONT(Q) = A
REAR(Q) = A
Dilanjutkandengan INSERT elemen B, sehinggadiperoleh Q = [A, B], sepertiterlihat di
Gambar 4.3.
- - - - - - - - - - - - - - - - - -
A B
- - - - - - - - - - - - - - - - - -
Gambar 4.3.Elemen B dimasukkansetelahelemen A
Di sini :
NOEL(Q) = 2
FRONT(Q) = A
REAR(Q) = B
Dilanjutkandengan INSERT elemen C, sehinggadiperoleh Q = [A, B, C], sepertiterlihat di
Gambar 4.4.
- - - - - - - - - - - - -
A B C
- - - - - - - - - - - - -
Gambar 4.4.Elemen C dimasukkansetelahelemen B
Di sini :
NOEL(Q) = 3
FRONT(Q) = A
REAR(Q) = C
Dilanjutkandengan DELETE satuelemendari Q, sehinggadiperoleh Q = [B,
C],sepertiterlihat di Gambar 4.5.

8

- - - - - - - - - - - - -
B C
- - - - - - - - - - - - -
Gambar 4.5.Satuelemendihapus
Di sini :
NOEL(Q) = 2
FRONT(Q) = B
REAR(Q) = C
Demikians eterusnya, kita dapat melakukan serangkaian INSERT dan DELETE
yang lain. Suatu kesalahan underflow dapat terjadi, yakni apabila kita melakukan
penghapusan pada antrean hampa. Antrean dikatakan beroperasi dalam cara FIRST-IN-
FIRST-OUT(FIFO). Disebut demikian karena elemen yang pertama masuk merupakan
elemen yang pertama keluar. Model antrean, sangat sering ditemukan dalam kejadian
sehari-hari, seperti mobil yang menunggu untuk pengisian bahan bakar, mobil pertama dari
antrean merupakan mobil pertama yang akan keluar dari antrean. Sebagai contoh lain
adalah orang yang menunggu dalam antrean di suatu bank. Orang pertama yang berada di
dalam barisan tersebut akan merupakan orang pertama yang akan dilayani.

2.5. Implimentasi Queue Dengan Menggunakan Array
Queue = Antrian
Elemen yang pertama kali masukkeantrianakankeluarpertamakalinya

DEQUEUE adalahmengeluarkansatuelemendarisuatuAntrian
9

Antriandapatdibuatdenganmenggunakan: Liniear Array dan Circular Array
2.5.1. Implimentasi Queue dengan linier array
Linear array adalah suatu array yang dibuat seakan-akan merupakan suatu
garis lurus dengan satu pintu masuk dan satu pintu keluar. Berikut ini diberikan
deklarasi kelas QueueLinear sebagai implementasi dari Queue menggunakan linear
array. Dalam prakteknya, kita dapat menggantinya sesuai dengan kebutuhan kita. Data
dikses dengan field data, sedangkan indeks item pertama dan terakhir disimpan dalam
field Head dan Tail. Konstruktor akan menginisialisasi nilai Head dan Tail dengan -1
untuk menunjukkan bahwa antrian masih kosong dan mengalokasikan data sebanyak
MAX_QUEUE yang ditunjuk oleh data. Destruktor akan mengosongkan antrian
kembali dan mendealokasikan memori yang digunakan oleh antrian.
Queue denganmenggunakan linier array
Terdapatsatubuahpintumasuk di suatuujungdansatubuahpintukeluar di ujungsatunya
Sehinggamembutuhkanvariabel Head dan Tail

Seperti halnya pada tumpukan (stack), maka dalam queue kita juga mengenal
tiga operasi dasar , yaitu inisialisasi (create) queue, enqueue queue dan dequeue queue.
Create queue
Untuk inisialisasi queue menggunakan array, maka kita membutuhkan
deklarasi antrian, misalnya sebagai berikut:
Const Max_Elemen = 100;
Type Antri = array[1..Max_Elemen] of integer;
Var Antrian : Antri;
Depan,
Belakang : integer;
10

Dalam deklarasi di atas, elemen queue dinyatakan dalam tipe integer.
Variabel depan menunjukkan posisi elemen pertama dalam array, sedangkan
variable menunjukkan posisi elemen terakhir dalam array.
Enqueue queue
Penambahan elemen baru, yang dinyatakan oleh variable X bisa
diimplementasikan dengan statement :
Belakang := Belakang + 1;
Antrian[Belakang] := X;
Dequeue queue
Penghapusan elemen bisa diimplementasikan dengan:
X := Antrian[Depan];
Depan := Depan + 1;
Pada saat permulaan, Belakang dibuat sama dengan 0 dan Depan dibuat sama dengan
1, dan antrian dinyatakan kosong jika Belakang < Depan. Banyaknya elemen yang ada
di antrian dinyatakan sebagai Belakang Depan + 1.

2.5.2. Implementasi Queue dengan Circular Array
Circular array adalah suatu array yang dibuat seakan-akan merupakan sebuah
lingkaran dengan titik awal(head) dan titik akhir (tail) saling bersebelahan jika array
tersebut masih kosong.
Create()
Untuk menciptakan dan menginisialisasi Queue
Dengan cara membuat Head dan Tail = -1

11


IsEmpty()
Untuk memeriksa apakah Antrian sudah penuh atau belum
Dengan cara memeriksa nilai Tail, jika Tail = -1 maka empty
Kita tidak memeriksa Head, karena Head adalah tanda untuk kepala antrian
(elemen pertama dalam antrian) yang tidak akan berubah-ubah
Pergerakan pada Antrian terjadi dengan penambahan elemen Antrian
kebelakang, yaitu menggunakan nilai Tail


IsFull()
Untuk mengecek apakah Antrian sudah penuh atau belum
Dengan cara mengecek nilai Tail, jika Tail >= MAX-1 (karena MAX-1
adalah batas elemen array pada C) berarti sudah penuh
12


Enqueue(data)
Untuk menambahkan elemen ke dalam Antrian, penambahan elemen selalu
ditambahkan di elemen paling belakang
Penambahan elemen selalu menggerakan variabel Tail dengan cara increment
counter Tail


Dequeue()
Digunakan untuk menghapus elemen terdepan/pertama dari Antrian
Dengan cara mengurangi counter Tail dan menggeser semua elemen antrian
kedepan.
13

Penggeseran dilakukan dengan menggunakan looping



Clear()
Untuk menghapus elemen-elemen Antrian dengan cara membuat Tail dan Head
= -1
Penghapusan elemen-elemen Antrian sebenarnya tidak menghapus arraynya,
namun hanya mengeset indeks pengaksesan-nya ke nilai -1 sehingga elemen-
elemen Antrian tidak lagi terbaca
14



Tampil()
Untuk menampilkan nilai-nilai elemen Antrian o Menggunakan looping dari
head s/d tail


2.6 Implementasi queue menggunakan linked list
Struktur data queue dapat juga diimplementasikan dengan menggunakan linked list. Berikut
penjelasan detail mengenai implementasi queue dengan linked list:
~ Menggunakan 2 variabel reference objek yakni front dan back.
~ Queue dikatakan kosong apabila front=back=null.
~ Proses enqueue dilakukan dengan cara :
- Buat node baru N, kemudian masukkan data baru X ke dalam N.
- Jika queue dalam keadaan kosong, atur nilai front=back=N.
- Jika queue tidak kosong, tambahkan N dan update nilai back.
~ proses dequeue dilakukan dengan cara menghapus elemen pertama (yang diacu oleh
variabel front).



15

Gambar 1. Ilustrasi Implementasi Queue dengan LinkedLIst

Dalam gambar 1 diatas, terlihat ada 4 buah data. Setiap data mempunyai anggota yang
menunjukkan ke data berikutnya, kecuali elemen yang paling belakang menunjuk ke
NULL. NULL berarti bahwa elemen tersebut tidak menunjuk ke posisi apapun. Elemen
paling depan ditunjuk oleh variabel front, sedangkan elemen paling belakang ditunjuk oleh
variabel back.
Setiap elemen dari queue mempunyai 2 bagian yaitu bagian data yang bernilai dengan data,
dan sebagian lagi adalah penunjuk ke data berikutnya (next).











BAB III
PENUTUP

3.1 Kesimpulan
Dari pembahasansebelumnyadapatditarikbeberapakesimpulan, yaitu :
16

a. Queue (antrian)adalah suatu struktur data linier list yang merupakan suatu
kumpulan data.
b. Pada queueapabila elemen ditambah maka penambahannya berada di posisi
belakang atau hanya diperbolehkan pada salah satu sisi belakang (rear)dan jika
dilakukan pengambilan elemen atau penghapusan (intersection) maka akan
dilakukan pada elemen paling depan (front).
c. Terdapatbeberapa karakteristik pada Queue, yaitu :elemenantrian, head (font), tail
(rear) , Jumlah elemen pada antrian (count), dan status atau kondisi antrian.
d. Queue banyakdigunakan di dalamkehidupannyata, contohnyaSimulasi antrian
dansistem produksi.
e. Terdapat operasi-operasi pokok (dasar) pada QueueyaituCreate Queue (Q),
EnQueue (Push), DeqQueue(Pop)danditambahoperasi-operasitambahanlainnya.
f. Implementasi queue pada array dapat dilakukan dengan linier array dan circulair
array.
g. Implementasi queue pada linkedlist dapat dilakukan dengan menggunakan 2
variabel reference objek yakni front dan back, Queue dikatakan kosong apabila
front=back=null, Proses enqueue dilakukan, proses dequeue dilakukan dengan cara
menghapus elemen pertama.
a. Pada linier array linear array suatu array dibuat seakan-akan merupakan suatu garis
lurus dengan satu pintu masuk dan satu pintu keluar.Sedangkanpadacircular array
suatu array dibuat seakan-akan merupakan sebuah lingkaran dengan titik
awal(head) dan titik akhir (tail) saling bersebelahan jika array tersebut masih
kosong.



3.2 Saran
Saran dari kami sebagai tim penulis adalah program queue (antrian) sangat tepat
digunakan dalam kehidupan nyata seperti pada simulasi antrian dan sistem produksi.
Pekerjaan akan lebih mudah dan cepat terselesaikan dari pada menggunakan sistem manual.
Selain itu diharapkan pembaca agar mencari referensi lain untuk contoh listing program
17

queue untuk pemakaian aplikasi lain jugaseperti listing program untuk aplikasi Free Pascal
IDE, Turbo Pascal, dan lain-lain.

18

Anda mungkin juga menyukai