Anda di halaman 1dari 44

ANTRIAN (QUEUE)

Disusun guna memenuhi tugas kelompok mata kuliah

Struktur Data dan Algoritma

Dosen : Kraugusteeliana, S.Kom., M.Kom., MM.

DISUSUN OLEH:
Andru Hidayatullah Arif (1810512095)
Maloma Hasibuan (1810512100)
Fikry Ardi Fatma (1810512111)
Orlen Bahtiar Khan (1810512112)
Dany Sentiana (1810512116)

KELAS SI C

PROGRAM STUDI S1 SISTEM INFORMASI


FAKULTAS ILMU KOMPUTER
UNIVERSITAS PEMBANGUNAN NASIONAL “VETERAN” JAKARTA
2019
ABSTRAK

Salah satu kegiatan yang pernah kita amati dalam kehidupan sehari-hari adalah mengantre, antre
sendiri bermaksud berdiri berderet-deret memanjang menunggu untuk mendapat giliran (membeli
karcis, mengambil ransum, membeli bensin, dan sebagainya) dan antrean berarti deretan orang, barang
olahan, atau unit yang sedang menunggu giliran untuk dilayani, diolah, dan sebagainya. Dalam dunia
komputer kita mengenal istilah variable terakhir (rear), variabel awal (front ), penghapusan (erase ) dan
antre sendiri dikenal dengan queue. Queue/antre dalam dunia komputer dimaksud dengan sekumpulan
data yang mana penambahan elemen/variabel hanya bisa dilakukan pada suatu ujung disebut dengan
sisibelakang, dan penghapusan(pengambilan elemen) dilakukan lewat ujung lain (sisi depannya). Queue
atau antrean banyak kita jumpai dalam kehidupan sehari-hari misalnya antrean mobil diloket tol, antrean
bioskop, antrean pendaftaran mahasiswa, dsb. Pada queue atau antrean terdapat satu buah pintu masuk
di satu ujung dan satu pintu keluar di ujung lainnya dimana membutuhkan variabel head dan tail ( rear
dan front). Queue memiliki beberapa karakteristik yakni variabel /elemen, jumlah elemen, status, front,
dan rear antrean/queue. Operasi pada queue ini terdapat tambah, hapus, dan kosong. Operasi-operasi
pada queue yakni operasi yakni create (), Isempty (), Isfull, enqueue(), dequeue(), clear(), dan tampil().

Queue menyediakan layanan dalam ilmu komputer, transportasi, dan riset operasi di mana
berbagai entitas seperti data, objek, orang, atau peristiwa disimpan dan ditahan untuk diproses nanti.
Dalam konteks ini, antrian melakukan fungsi buffer. Queue diimplementasikan sebagai struktur data
ditambah dengan rutinitas akses, sebagai struktur data abstrak atau dalam bahasa berorientasi objek
sebagai kelas. Implementasi umum adalah buffer bundar dan daftar tertaut.

Penelitian ini bertujuan untuk memahami tentang apa itu queue dalam struktur data yang kita
kenal sebagai antrian, mengetahui bagaimana cara mengoperasikan/ menjalankan struktur data queue,
mengetahui apa saja kegunaan struktur data queue dalam kehidupan sehari-hari, apa saja contoh
aplikasinya dalam kehidupan sehari-hari, dan apa saja contoh aplikasinya.

i
DAFTAR ISI
ABSTRAK .............................................................................................................................. i

DAFTAR ISI ........................................................................................................................... ii

BAB I PENDAHULUAN

1.1 Latar Belakang .................................................................................................................. 1

1.2 Rumusan Masalah ............................................................................................................. 1

1.3 Tujuan Penelitian ............................................................................................................. 2

BAB II LANDASAN TEORI

2.1 Pengeritan Queue .............................................................................................................. 3

2.2 Algoritma dan Flowchart Queue ....................................................................................... 5

2.3 Queue dengan Array ........................................................................................................ 7

2.4 Linked List Pada Queue .................................................................................................... 13

2.5 Operasi / Prosedur Standar Pada Queue ........................................................................... 15

2.6 Perbandingan Queue Array Dengan Queue Linked List .................................................. 19

2.7 Perbedaan Queue dan Stack .............................................................................................. 22

BAB III PEMBAHASAN

3.1 Queue Menggunakan Array .............................................................................................. 23

3.2 Queue Menggunakan Linked List ..................................................................................... 26

3.3 Aplikasi Queue Dalam Kehidupan Sehari-hari ................................................................. 31

3.4 Aplikasi Queue Dalam Software Aplikasi ........................................................................ 32

3.5 Aplikasi Queue Dalam Jaringan ....................................................................................... 35

3.6 Aplikasi Queue Dalam Sistem Produksi ........................................................................... 38

3.7 Antrian Berprioritas .......................................................................................................... 38

BAB IV KESIMPULAN

4.1 Kesimpulan ....................................................................................................................... 40

DAFTAR PUSTAKA

ii
BAB I
PENDAHULUAN

1.1 Latar belakang

Queue (antrian) adalah barisan elemen yang apabila elemen ditambah maka penambahannya
berada di posisi belakang (rear) dan jika dilakukan pengambilan elemen dilakukan di elemen paling
depan (front) atau ordered list dengan cara menyisipkan elemen di satu ujung, sedang melakukan
penghapusan di ujung lainnya. Ujung penyisipan biasa disebut rear/tail, sedang ujung penghapusan
disebut front/head.

Karakteristik Queue memang terbatas, tetapi Queue merupakan kakas dasar penyelesaian
masalah-masalah besar, seperti simulasi fenomena antrian di dunianyata, serta fenomena antrian di
pengolahan data. Beberapa fenomena dunia nyata berupa antrian diantaranya antrian pembelian tiket di
depan loket untuk bis, kereta api, bioskop, antrian mobil di depan gerbang jalan tol, antrian kendaraan
di jalanan umum, dll.

Representasi Queue dapat dilakukan dengan empat cara, yaitu :

1. Representasi sekuen
2. Representasi sekuen linear
3. Representasi sekuen melingkar
4. Representasi dinamis

Pembahasan representasi sekuen menggunakan array pada setiap pengoperasiannya, sedangkan


representasi dinamis biasanya menempati memori berupa record keduanya dideklarasikan menggunakan
bahasa pemograman pascal.

1.2 Rumusan masalah

Rumusan masalah dalam makalah ini adalah :

1. Apakah struktur data queue


2. Bagaimanakah cara mengoperasikan/ menjalankan struktur data queue
3. Apa saja kegunaan struktur data queue dalam kehidupan sehari-hari
4. Apa saja contoh aplikasinya dalam kehidupan sehari-hari
5. Apa saja contoh aplikasinya

1
1.3 Tujuan penelitian

1. Dapat memahami pengertian struktur data queue,


2. Dapat memahami operasi-operasi pada queue,
3. Dapat mengetahui cara pengoperasian struktur data queue,
4. Dapat mengaplikasikan struktur data queue dalam kehidupan sehari-hari,
5. Dapat memanfaatkan stuktur data queue dalam menyelesaikan suatu masalah tertentu,
6. Dapat mengetahui aplikasi serta jaringan struktur data queue.
7. Mengaplikasikan queue dalam algoritma.
8. Menggunakan operasi queue
9. Mendeklarasikan variabel dan tipe queue
10. Menjelaskan Queue (antrian)

2
BAB II
LANDASAN TEORI

2.1 Pengertian Queue


Kata antrian berasal dari bahasa Inggris untuk baris (jenis yang Anda tunggu). Di Inggris, untuk
"antri" artinya mengantri. Dalam ilmu komputer antrian adalah struktur data yang agak seperti
tumpukan, kecuali bahwa dalam antrian, item pertama yang dimasukkan adalah yang pertama dihapus
(First-In-First-Out, FIFO), saat dalam tumpukan, seperti yang kita lihat, item terakhir yang dimasukkan
adalah yang pertama kali dihapus (LIFO). Antrian berfungsi seperti di bioskop: Orang pertama yang
bergabung dengan garis belakang adalah orang pertama yang mencapai bagian depan antrean dan beli
tiket. Orang terakhir yang antre adalah orang terakhir yang membeli tiket (atau — jika pertunjukan sudah
terjual habis — gagal membeli tiket).

Antrian digunakan sebagai alat programmer seperti halnya tumpukan. Mereka juga digunakan
untuk memodelkan situasi dunia nyata seperti orang yang mengantri di bank, pesawat yang menunggu
lepas landas, atau data paket yang menunggu untuk dikirim melalui Internet. Ada berbagai antrian yang
diam-diam melakukan tugasnya di komputer Anda (atau sistem operasi jaringan). Antrian juga
menyimpan data keystroke saat Anda mengetik di keyboard. Dengan cara ini, jika Anda menggunakan
pengolah kata tetapi komputer ini singkat melakukan sesuatu yang lain ketika Anda menekan tombol,
penekanan tombol tidak akan hilang; menunggu di mengantri sampai pengolah kata punya waktu untuk
membacanya. Menggunakan antrian menjamin penekanan tombol tetap teratur sampai mereka dapat
diproses.
3
Perbedaan antara stackdan queueterdapat pada aturan penambahan dan penghapusan elemen.
Pada stack, operasi penambahan dan penghapusan elemen dilakukan di satu tempat atau satu ujung.
Sementara pada queue operasi penambahan dapat dilakukan di tempat yang berbeda. Penambahan
elemen dilakukan di salah satu ujung, biasa disebut dengan elemen depan, dan ujung lainnya, yang biasa
disebut dengan ujung belakang digunakan untuk penghapusan data.

Operasi standard pada queue antara lain:

1. Membuat queue atau inisialisasi;

2. Mengecek apakah queue penuh/full;

3. Mengecek apakah queue kosong/empty;

4. Memasukkan elemen ke dalam queue dan InQueue(Insert Queue);

5.Menghapus elemen dari queue atau DeQueue (Delete Queue).

Representasi Queue :

Untuk mempermudah penulisan, di bawah ini isi queue tidak dituliskan secara bertumpuk, tetapi
dengan kesepakatan:

•elemen paling kanan adalah elemen yang ada pada ujung belakang (yang terakhir kali masuk)
•queue yang dipakai bernama Q

•ADDQ(B,Q) berarti memasukkan elemen B ke dalam queue Q

•DELQ(B,Q) berarti mengambil elemen dari queue Q dan menaruhnya ke dalam variabel B

4
2.2 Algoritma dan Flowchart Queue

2.2.1 Algoritma Queue

1. Penambahan data dilakukan pada ujung sebuah list, sedangkan penghapusan data dilakukan pada
ujung ynag lain.
2. Data yang dihapus adalah data yang paling awal ditambahkan.
3. Nama lain : FIFO (First In First Out)
4. Operasi ENQUEUE : menambah data pada sebuah list.
5. ENQUEUE
1

Front= =Rear

6. ENQUEUE 1 2

Front Rear

7. ENQUEUE 1 2 3

Front Rear

8. ENQUEUE 1 2 3 4

Front Rear

9. DEQUEUE : Menghapus data pada sebuah list.

10. DEQUEUE 1 2 3 4

Front Rear

11. DEQUEUE 2 3 4

Front Rear

12. DEQUEUE
1 52
Front Rear

13. DEQUEUE
1

Front= =Rear

Penjelasan Algoritma

Pada algoritma antrian atau queue terdapat tiga proses operasi antara lain penambahan, pengaksesan dan
penghapusan. Dimana penambahan queue terdiri dari mulai kemudian pendeklarasian linked list , setelah
itu memasukkan data atau menambahkan data sesuai dengan kebutuhan setelah itu selesai. Sedangkan
pada algoritma pengaksesan data adalah mulai, kemudian mencetak daftar antrian atau mencetak Node
Head , setelah mencetak program akan berakhir. Untuk algoritma operasi yang terakhir adalah
penghapusan data yang di awali dari mulai, kemudian menghapus data yang dimasukkan pertama,
karena pada antrian ini menerapkan kaidah FIFO atau first in first out , setelah itu program selesai.

2.2.2 Flowchart Queue

6
Penjelasan flowchart :

Pada program queue secara umum bermula dengan memproses queue untuk mengecek apakah queue
kosong, setelah itu masuk ke proses operasi instruksi pilihan antara lain dequeue , enqueue , dan end
program. Apabila pilihan sama dengan 1 maka push value to queue apabila pilihan sama dengan 2
maka masuk ke kondisi apakah queue tersebut kosong jika benar maka pop value from queue apabila
kondisi queue kosong salah maka kembali ke proses operasi intruksi pilihan, sedangkan apabila pilihan
bukan sama dengan 2 maka program berhenti.

2.3 Queue Dengan Array

Karena antrian merupakan suatu kumpulan data, maka tipe data yang sesuai untuk menyajikan antrian
adalah menggunakan array atau list (senarai berantai).

Gambar di atas menunjukkan contoh penyajian antrian menggunakan array. Antrian di atas berisi 6

elemen, yaitu A, B, C, D, E dan F. Elemen A terletak di bagian depan antrian dan elemen F terletak di
bagian belakang antrian. Jika ada elemen baru yang akan masuk, maka elemen tersebut akan diletakkan
di sebelah kanan F. Dan jika ada elemen yang akan dihapus, maka A akan dihapus terlebih dahulu.
Elemen A terletak di bagian depan, kemudian disusul elemen B dan elemen yang paling akhir atau paling
belakang adalah elemen F. Misalkan ada elemen baru yang akan masuk maka akan terletak di belakang
elemen F, sehingga elemen baru akan menempati posisi yang paling belakang. Seperti pada tumpukan
atau stack di dalam antrian juga dikenal 2 operasi dasar yaitu menambah elemen baru yang akan
diletakkan di bagian belakang antrian dan menghapus elemen yang terletak di bagian depan antrian.
Untuk memahami penggunaan antrian dalam array, kita membutuhkan deklarasi antrian, misalnya
sebagai berikut :

# define MAXN 6
7
Typedef enum { NOT_OK, OK } Tboolean;

Typedef struct {

Titem array [MAXN];

int first;

int last;

int number_of_items;

} Tqueue

Dengan deklarasi di atas, elemen antrian dinyatakan dalam tipe integer yang semuanya terdapat dalam
struktur. Variabel first menunjukkan posisi elemen pertama dalam array, dan variabel last menunjukkan
posisi elemen terakhir dalam array.

Algoritma dari penggalan program di atas adalah :

1. Tentukan elemen yang akan dimasukkan ke dalam antrian (dalam hal ini adalah 6 elemen).

2. Deklarasikan struktur untuk menampung elemen pada antrian.

3. Selesai

Untuk menambah elemen baru dan mengambil elemen dari antrian dalam antrian, diperlukan deklarasi

berikut ini :

void initialize_queue ( Tqueue *Pqueue)

Pqueue -> firs = 0;

Pqueue -> last = -1;

Pqueue -> number_of_items = 0;

Tboolean enqueue ( Tqueue *Pqueue, Titem item)

if (Pqueue -> number_of_items >= MAXN)

return (NOT_OK);

8
else {

Pqueue -> last++;

if (Pqueue -> last > MAXN -1)

Pqueue -> = 0;

Pqueue -> array[Pqueue->last] = item;

Pqueue -> number_of_items++;

return (OK);

Tboolean dequeue (Tqueue *Pqueue, Titem, item)

if (Pqueue -> number_of_items == 0)

return (NOT_OK);

else {

*Pitem = Pqueue -> array[Pqueue->first++];

if (Pqueue -> first > MAXN -1)

Pqueue -> first = 0;

Pqueue -> number_of_items--;

return (OK);

9
Circular Bounded Queue Cara mensimulasikan antrian secara circular dalam array linear menggunakan
arithmetic modular. Arithmetic modular menggunakan ekspresi rumus (X % N) untuk menjaga besarnya
nilai X pada range 0:N-1. Jika indeks telah sampai pada N dengan penambahan atau pengurangan
tersebut, maka indeks akan diset pada angka 0.

Hal yang sama juga dilakukan pada Front jika dilakukan pengambilan item dari antrian. Setelah
mengambil item dari antrian, kita melakukan increment terhadap Front untuk penunjukan pada posisi
sesudahnya. Apabila indeks telah berada pada N, maka indeks diset juga pada angka 0.

Operasi-Operasi Queue demgam Array

a. IsEmpty

Operasi ini digunakan untuk memeriksa apakah antrian dalam keadaan kosong. Operasi ini penting
dilakakukan dalam proses Dequeu. Ketika suatu antrian dalam keadaan kosong maka proses dequeu
tidak bisa dilakukan. Operasi ini dilakukan dengan memeriksa tail. Jika tail bernilai -1, maka berarti
antrian dalam keadaan empty (kosong).

Int isEmpty()

If(antrian.tail==-1)

10
Return 1;

Else

Return 0;

b. IsFull

Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa menampung data
dengan cara mengecek apakah Jumlah Queue sudah sama dengan MAX_QUEUE atau belum. Jika benar
maka queue sudah penuh.

Int isfull()

If(antrian.tail==MAX-1)

Return 1;

Else

Return 0;

c. EnQueue

Opeerasi ini berguna untuk menambah suatu elemen data baru pada antrian dan disimpan pada posisi
head dan tail yang akan mengakibatkan posisi tail akann berubah. langkah operasi ini adalah :

a. perikasalah apakah kosong. Jika kosong maka ubah posisi head dan tail pada posisi 0, kemudian
masukan datanya.

b. Jika antrian tidak kosong maka naikan posisi tail sebesar 1. Kemudian masukan datanya.

Void enqueue(int data)

If(isempty()==1)

Antrian.head=antrian=tail=0;

Antrian.data[antrian.tail]=data;
11
Cout< }

Else

Antrian.tail++;

Antrian.data[antrian.tail]=data;

Cout< }

d. DeQueue

Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara
menghapus satu simpul yang terletak paling depan (head).

e. Clear

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

Void clear()

Antrian.head=antian.tail=-1;

Cout<<”data clear”;

f. Operasi Tampil

digunakan untuk menampilkan nilai-nilai elemen antrian. Proses menampilkan data dalam antrian
dilakukan dengan menggunakan looping dari head sampai dengan tail.

Void tampil()

If (isempty()==0)

For (int i=antrian.head; i<=antrian.tail; i++)

Cout<<else
12
Cout<<”data kosong\n”;

2.4 Linkedlist Pada Queue

Pengertian linked list adalah :

1. sekumpulan elemen bertipe sama, yang mempunyai keterurutan tertentu, yang setiap
elemennyaterdiri dari dua bagian
2. struktur berupa rangkaian elemen saling berkait dimana setiap elemen dihubungkan elemen lain
melalui pointer. Pointer adalah alamat elemen. Penggunaan pointer untuk mengacu elemen
berakibat elemen-elemen bersebelahan secara logik walau tidak bersebelahan secara fisik di
memori.

Bentuk umum :

Infotype : sebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list.

Next : address dari elemen berikutnya (suksesor).

jika L adalah list, dan P adalah address, maka alamat elemen pertama list L dapat diacu dengan notasi :
“Sebelum digunakan harus dideklarasikan terlebih dahulu :

Elemen yang diacu oleh P dapat dikonsultasi informasinya dengan notasi :

Beberapa Definisi :

1. List I adalah list kosong, jika First(L) = Nill


2. Elemen terakhir dikenali, dengan salah satu cara adalah karena Next(Last)= Nill

Nil adalah pengganti Null, perubahan ini dituliskan dengan #define Nill Null.

data terletak pada sebuah lokasi memori area.tempat yang disediakan pada satu area memori tertentu
untuk menyimpan data dikenal dengan sebutan node atau simpul. setiap node memiliki pointer yang
menunjuk ke simpul berikutnya sehingga terbentuksatu untaian, dengan demikian hanya diperlukan
sebuah variabel pointer. Susunan berupa untaian semacam ini disebut Single Linked list (NULL
memiliki nilai khusus yang artinya tidak menunjuk ke mana-mana. Biasanya linked list pada titik
akhirnya akan menun&uk ke NULL).

Pembuatan single linked list dapat menggunakan 2 metode :

1. LIFO (Last In First Out), aplikasinya : Stack (Tumpukan).

13
2. FIFO (First In First Out), aplikasinya : Queue (Antrean).

Queue Dengan Double Linked List

Selain menggunakan array, queue juga dapat dibuat dengan linked list. Metode linked list yang
digunakan adalah double linked list.

Operasi-operasi Queue dengan Double Linked List

1. IsEmpty

Fungsi IsEmpty berguna untuk mengecek apakah queue masih kosong atau sudah berisi data. Hal ini
dilakukan dengan mengecek apakah head masih menunjukkan pada Null atau tidak. Jika benar berarti
queue masih kosong.

2. IsFull

Fungsi IsFull berguna untuk mengecek apakah queue sudah penuh atau masih bisa menampung data
dengan cara mengecek apakah Jumlah Queue sudah sama dengan MAX_QUEUE atau belum. Jika benar
maka queue sudah penuh.

3. EnQueue

Fungsi EnQueue berguna untuk memasukkan sebuah elemen ke dalam queue (head dan tail mula-mula
meunjukkan ke NULL).

4. DeQueue

Procedure DeQueue berguna untuk mengambil sebuah elemen dari queue. Hal ini dilakukan dengan cara
menghapus satu simpul yang terletak paling depan (head).

Untuk mengimplementasikan antrian dengan menggunakan pointer, algoritma berikut ini :

1. Tentukan struktur untuk menampung node yang akan dimasukkan pada antrian.

Deklarasi struktur pada penggalan program berikut ini :

struct queueNode

char data;

struct queueNode *nextPtr;

};

typedef struct queueNode QUEUENODE;


14
ypedef QUEUENODE * QUEUENODEPTR;

QUEUENODEPTR headPtr = NULL, tailPtr = NULL;

2. Deklarasikan penambahan elemen baru pada antrian, dimana letaknya adalah paling belakang.

Deklarasi penambahan elemen baru tersebut dapat dilihat pada penggalan program berikut ini :

void enqueue ( QUEUENODEPTR *headPtr, QUEUENODEPTR *tailPtr, char value )

QUEUENODEPTR newPtr = malloc ( sizeof ( QUEUENODE ) );

If ( newPtr != NULL )

newPtr -> data = value;

newPtr -> nextPtr = NULL;

if ( isEmpty ( *headPtr ) )

*headPtr = newPtr;

Struktur Data dan Algoritma_Anita Sindar, ST, M.TI 2018

else

( *tailPtr ) -> nextPtr = newPtr;

*tailPtr = newPtr;

3. Lakukan pengecekan terhadap antrian, apakah antrian dalam kondisi kosong atau tidak. Kalau kondisi

antrian kosong, maka elemen bisa dihapus. Penggalan program berikut ini akan menunjukkan kondisi
tersebut.

int isEmpty ( QUEUENODEPTR headPtr )

return headPtr == NULL;

2.5 Operasi / Prosedur Standar pada Queue

15
Pada dasarnya, operasi-operasi dasar pada queue mirip dengan operasi-operasi dasar pada stack.
Perbedaannya hanya pada prosedur push dan pop saja. Pada queue, prosedur yang berfungsi untuk
memasukkan data/ nilai ke dalam antrian adalah enqueue, sedangkan prosedur untuk
mengeluarkan data/ nilai dari antrian adalah dequeue.
a. Prosedur createEmpty
Sama pada stack, prosedur ini berfungsi untuk mengosongkan queue dengan cara meletakkan
HEAD dan TAIL pada indeks array ke-0.
b. Prosedur enqueue
Prosedur ini digunakan untuk memasukkan sebuah data/ nilai ke dalam queue. Sebelum sebuah
data/ nilai dimasukkan ke dalam queue, maka prosedur ini terlebih dahulu melakukan pengecekan
terhadap posisi HEAD dan TAIL. Jika posisi HEAD dan TAIL masih berada pada indeks ke-0
(artinya queue masih kosong), maka prosedur ini akan menempatkan HEAD dan TAIL pada
indeks ke-1 terlebih dahulu, baru setelah itu memasukkan data/ nilai ke dalam array data queue.
Namun, jika posisi HEAD dan TAIL tidak berada pada posisi ke-0, maka posisi TAIL yang akan
dinaikkan satu level. Jadi, pada proses enqueue, TAIL-lah yang berjalan seiring masuknya data
baru ke dalam antrian, sedangkan HEAD akan tetap pada posisi ke-1.
Prosedur memiliki sebuah parameter x yang bertipe integer. Parameter ini berguna untuk
menerima kiriman nilai dari program utama main() yakni berupa sebuah bilangan integer yang
akan dimasukkan ke dalam queue. Gambar di bawah ini mengilustrasikan proses enqueue ke dalam
sebuah queue yang masih kosong.

16
Gambar di bawah ini mengilustrasikan proses enqueue ke dalam sebuah queue yang telah berisi
data (queue tidak kosong).

c. Prosedur Dequeue
Prosedur ini digunakan untuk mengeluarkan / membuang sebuah data / nilai yang paling depan
(data yang berada pada posisi HEAD). Prosedur ini adalah menaikkan nilai HEAD satu level.
Jadi, setiap satu kali data dikeluarkan, maka posisi HEAD naik bertambah satu level. Misalkan
HEAD berada pada indeks ke-1, maka ketika akan mengeluarkan/ menghapus data pada posisi
paling depan, prosedur ini akan menaikkan posisi HEAD ke indeks array ke-2.
Ketika posisi HEAD sudah melewati posisi TAIL (HEAD > TAIL), berarti sudah tidak ada lagi
data/ nilai di dalam queue tersebut serta HEAD dan TAIL dikembalikan ke posisi index ke-0.
Gambar di bawah ini mengilustrasikan cara kerja prosedur dequeue:

17
Demikian seterusnya, HEAD akan bergeser seiring dengan dikeluarkannya nilai satu-persatu dan
ketika nilai terakhir yaitu nilai 3 dikeluarkan, maka posisi HEAD dan TAIL:

Dan ketika kondisi HEAD > TAIL seperti ilustrasi di atas, maka queue telah dikeluarkan dan
HEAD dan TAIL dikembalikan ke indeks ke-0.

d. Fungsi IsEmpty
Sama seperti fungsinya pada stack, fungsi ini berfungsi untuk melakukan pengecekan terhadap
queue, apakah queue tersebut kosong atau tidak. Jika queue tersebut kosong (artinya, HEAD dan

18
TAIL berada pada posisi 0, atau bisa juga ketika HEAD > TAIL), maka fungsi akan
mengembalikan nilai 1 (true), tetapi jika queue tersebut tidak kosong/ berisi (artinya, HEAD dan
TAIL tidak berada pada posisi 0), maka fungsi akan mengembalikan nilai 0 (false).

e. Fungsi IsFull
Fungsi ini berfungsi untuk melakukan pengecekan terhadap queue, apakah queue tersebut penuh
atau tidak. Jika queue tersebut penuh (artinya, TAIL berada pada posisi MAX), maka fungsi akan
mengembalikan nilai 1 (true), tetapi jika queue tersebut tidak penuh (artinya, TAIL tidak berada
pada posisi MAX), maka fungsi akan mengembalikan nilai 0 (false).

7. Deklarasi Queue
Sebuah queue di dalam program komputer dideklarasikan sebagai sebuah tipe bentukan baru.
Sebuah struktur data dari sebuah queue setidaknya harus mengandung dua atau tiga variabel, yaitu
variabel HEAD yang berguna sebagai penanda bagian depan antrian, variabel TAIL yang berguna
sebagai penanda bagian belakang antrian dan array yang menampung data-data yang dimasukkan
tersebut.
Dimana, nilai MAX didefinisikan sebagai jumlah data maksimum yang dapat disimpan dalam
queue. Setelah struktur data dari queue didefinisikan, maka dapat dibuat variabel-variabel baru
yang mengacu pada tipe data queue di atas, misalnya membuat variabel dengan nama antrian yang
bertipe queue:
Queue antrian;
Dalam modul ini, sebuah queue didefinisikan dengan array berukuran MAX+1, elemen array ke-
0 tidak digunakan untuk menyimpan data, melainkan hanya sebagai tempat peletakan variabel
HEAD dan TAIL. Sehingga, jika HEAD dan TAIL berada pada elemen array ke-0, berarti queue
tersebut dalam kondisi kosong (tidak ada data yang disimpan). Berikut adalah ilustrasi dari sebuah
queue kosong dengan ukuran nilai MAX = 6:

2.6 Perbandingan Queue Array Dengan Queue Linked List

Implementasi queue menggunakan array

1. Implementasi sederhana

19
2. Ukuran memori harus ditentukan ketika sebuah objek queue dideklarasikan
3. Pemborosan tempat (memori) ketika menggunakan jumlah data yang lebih sedikit dari alokasi
memori
4. Tidak dapat menambahkan data melebihi maksimal ukuran array yang telah dideklarasikan

Implementasi queue menggunakan linked list

1. Pengalokasian memori dinamis


2. Menggunaka 2 buah pionter, qFront dan qRear, untuk menandai posisi depan dan belakang dari
queue

Perbandingan implementasi queue, array VS linked list (contoh 1)

A. Memory requirements

1. Array-based implementation

a. Diasumsikan ukuran queue 100 (string @80bytes)

b. Diasumsikan index membutuhkan 2 bytes

c. Total memory: (80 bytes x 101 slots) + (2 bytes x 2 indexes) = 8084 bytes

2. Linked-list-based implementation

a. Diasumsikan pointers membutuhkan 4 bytes

b. Total memory per node: 80 bytes + 4 bytes = 84 bytes

Gambar :

20
Perbandingan implementasi queue, array VS linked list (contoh 2)

A Memory requirements

1. Array-based implementation

a. Diasumsikan ukuran queue 100 (string @2bytes)

b. Diasumsikan index membutuhkan 2 bytes

c. Total memory: (2 bytes x 101 slots) + (2 bytes x 2 indexes) = 206 bytes

2. Linked-list-based implementation

a. Diasumsikan pointers membutuhkan 4 bytes

b. Total memory per node: 2 bytes + 4 bytes = 6 bytes

Gambae :

Kesmipulan dari perbandingan Antara Stack-Queue Dengan Linked List Vs Stack-Queue Dengan Array
:

1. Untuk stack dan queue yang berukuran besar, terutama jumlah maksimal data tidak
diketahui, lebih baik menggunakan linked list.

21
2. Untuk perangkat yang memiliki memori terbatas, seperti small handheld devices, linked
list memiliki performa yang lebih bagus.

Operasi-operasi yang berhubungan dengan jumlah elemen suatu queue adalah :

1. Size, yaitu operasi untuk mendapatkan banyaknya elemen queue.


2. Empty, yaitu prosedur untuk mengetahui apakah queue dalam keadaan kosong atau tidak.
Dengan status ini maka dapat dicegah dilakukannya operasi Dequeue dari suatu queue yang
kosong.
3. Full, merupakan prosedur untuk mengetahui apakah Queue penuh atau tidak. Prosedur ini hanya
berlaku untuk queue yang jumlahnya terbatas.

2.7 Perbedaan Queue dan Stack

Perbedaan stack dan queue terdapat pada: üaturan penambahan dan penghapusan elemen.
Pada stack, operasi penambahan dan penghapusan elemen dilakukan di satu tempat atau satu ujung.
Elemen yang terakhir kali dimasukkan akan berada paling dekat dengan ujung atau dianggap paling
atas sehingga pada operasi penghapusan, elemen teratas tersebut akan dihapus paling awal. Pada queue,
operasi tersebut dilakukan di tempat yang berbeda. Penambahan elemen selalu dilakukan melalui salah
satu ujung, menempati posisi di belakang elemen-elemen yang sudah masuk sebelumnya atau menjadi
elemen belakang, sedangkan penghapusan elemen dilakukan di ujung yang berbeda, yaitu pada posisi
elemen yang masuk paling awal atau elemen depan dibanding elemen-elemen lain. üStack dengan
single linked list, sedangkan queue dengan double linked list. stack dapat diimplementasikan
dengan single linked list. Keunggulannya dibandingkan array adalah penggunaan alokasi memori
yang dinamis sehingga menghindari pemborosan memori. Misalnya pada stack dengan array
disediakan tempat untuk stack berisi 150 elemen, sementara ketika dipakai oleh user stack hanya
diisi 50 elemen, maka telah terjadi pemborosan memori untuk sisa 100 elemen, yang tak terpakai.
Dengan penggunaan linked list maka tempat yang disediakan akan sesuai dengan banyaknya elemen
yang mengisi stack. Dalam stack dengan linked list tidak ada istilah full, sebab biasanya program tidak
menentukan jumlah elemen stack yang mungkin ada (kecuali jika sudah dibatasi oleh pembuatnya).
Namun demikian sebenarnya stack ini pun memiliki batas kapasitas, yakni dibatasi oleh jumlah memori
yang tersedia. Salah satu kelemahan single linked list adalah pointer (penunjuk) hanya dapat bergerak
satu arah saja, maju/mundur, atau kanan/kiri sehingga pencarian data pada single linked list hanya
dapat bergerak dalam satu arah saja. Untuk mengatasi kelemahan tersebut, dapat menggunakan
metode double linked list. Linked list ini dikenal dengan nama Linked list berpointer Ganda atau
Double Linked List.. Procedure dequeue; Var now : point; Begin If not IsEmpty then Begin Now :=
q.head; q.head := q.head^.next; dispose (now); dec(n); End; End;
22
BAB III

PEMBAHASAN

3.1 Queue Menggunakan Array

3.1.1 Source Code

================ AWAL SOURCE CODE==================

#include <iostream>

using namespace std;

int queue[10], n = 10, front = - 1, rear = - 1;

void Insert() {

int val;

if (rear == n - 1)

cout<<"Queue Overflow"<<endl;

else {

if (front == - 1)

front = 0;

cout<<"Masukkan element di queue : "<<endl;

cin>>val;

rear++;

queue[rear] = val;

void Delete() {

if (front == - 1 || front > rear) {


23
cout<<"Queue Underflow "<<endl;

return ;

} else {

cout<<"Elemen yang di hapus : "<< queue[front] <<endl;

front++;;

void Display() {

if (front == - 1)

cout<<"Queue kosong!"<<endl;

else {

cout<<"Element yang ada di queue : ";

for (int i = front; i <= rear; i++)

cout<<queue[i]<<" ";

cout<<endl;

int main() {

int ch;

cout<<"1) Masukkan element kedalam queue"<<endl;

cout<<"2) Menghapus element dari queue"<<endl;

cout<<"3) Tampilkan element yang ada di dalam queue"<<endl;

cout<<"4) Exit"<<endl;

do {

cout<<"Input angka sesuai pilihan : "<<endl;

cin>>ch;
24
switch (ch) {

case 1: Insert();

break;

case 2: Delete();

break;

case 3: Display();

break;

case 4: cout<<"Exit"<<endl;

break;

default: cout<<"Error"<<endl;

} while(ch!=4);

return 0;

=================== AKHIR SOURCE CODE======================

3.1.2 Output

25
3.1.3 Penjelasan

Kaitan queue dengan array adalah tempat menyimpan data inputnya, dengan source code diatas, jumlah
maksimum data yang bisa di input adalah 10, dapat dilihat di deklarasi array queue yaitu queue[10].

Source code diatas dapat dibagi menjadi 4 function, yaitu :

1. Insert()

Berfungsi untuk memasukkan element kedalam sebuah queue sekaligus mengecek apabila jumlah data
melebihi jumlah slot di array queue.

2. Delete()

Berfungsi untuk menghapus element pertama di queue dengan cara meng-increment value front, jika
queue kosong, maka akan menunjukkan pesan “Underflow”

3. Display()

Berfungsi untuk menampilkan data yang ada didalam queue.

4. main()

Function ini bisa disebut sebagai “driver” yang berfungsi untuk memberikan pilihan kepada pengguna
(menambahkan, menghapus, atau menampilkan queue).

Dari output diatas, bisa dilihat bahwa 3 input pertama adalah untuk memasukkan data 2,3, dan 5 kepada
queue, setelah itu queue yang ada ditampilkan memakai function display, setelah 3 data tersebut
ditampilkan, data pertama yang diinput dihapus oleh function delete, dan akhirnya ditampilkan lagi
queue yang sudah berubah.

3.2 Queue Menggunakan Linked List

================ AWAL SOURCE CODE==================

3.2.1 Source Code

#include <iostream>

#include <stdlib.h>

using namespace std;


26
struct node {

int data;

struct node *next;

};

struct node* front = NULL;

struct node* rear = NULL;

struct node* temp;

void Insert() {

int val;

cout<<"Masukkan element di queue : "<<endl;

cin>>val;

if (rear == NULL) {

rear = (struct node *)malloc(sizeof(struct node));

rear->next = NULL;

rear->data = val;

front = rear;

} else {

temp=(struct node *)malloc(sizeof(struct node));

rear->next = temp;

temp->data = val;

temp->next = NULL;

rear = temp;

void Delete() {

temp = front;
27
if (front == NULL) {

cout<<"Queue Underflow "<<endl;

return;

else

if (temp->next != NULL) {

temp = temp->next;

cout<<"Elemen yang di hapus : "<<front->data<<endl;

free(front);

front = temp;

} else {

cout<<"Elemen yang di hapus : "<<front->data<<endl;

free(front);

front = NULL;

rear = NULL;

void Display() {

temp = front;

if ((front == NULL) && (rear == NULL)) {

cout<<"Queue kosong!"<<endl;

return;

cout<<"Element yang ada di queue : ";

while (temp != NULL) {

cout<<temp->data<<" ";
28
temp = temp->next;

cout<<endl;

int main() {

int ch;

cout<<"1) Masukkan element kedalam queue"<<endl;

cout<<"2) Menghapus element dari queue"<<endl;

cout<<"3) Tampilkan element yang ada di dalam queue"<<endl;

cout<<"4) Exit"<<endl;

do {

cout<<"Input angka sesuai pilihan : "<<endl;

cin>>ch;

switch (ch) {

case 1: Insert();

break;

case 2: Delete();

break;

case 3: Display();

break;

case 4: cout<<"Exit"<<endl;

break;

default: cout<<"Error"<<endl;

} while(ch!=4);

return 0;
29
}

=================== AKHIR SOURCE CODE======================

3.2.2 Output

3.2.3 Penjelasan

Output program yang dibuat kurang lebih sama dengan output program kaitan queue dan array, function
yang digunakan pun sama, tetapi metode penyimpanan data queue yang digunakan berbeda.

1. Insert()

Jika rear adalah NULL, maka queue kosong dan element yang dimasukkan menjadi rear, tetapi jika
tidak, element akan dimasukkan setelah rear.

2. Delete()

Jika tidak ada element di queue untuk dihapus, maka akan menunjukkan pesan “Underflow”, jika hanya
ada satu element, maka front dan rear diubah menjadi NULL, dan jika jumlah element lebih dari satu,
element pertama (front) dihapus dan front menjadi element setelahnya.

3. Display()
30
Sama seperti di array queue, berfungsi untuk menampilkan data didalam queue.

4. main()

Sama seperti di array queue, berfungsi untuk menunjukkan pilihan untuk pengguna (User Interface).

3.3 Aplikasi Queue Dalam Kehidupan Sehari-hari

3.3.1 Pada Bank

Contoh aplikasi dalam kehidupan sehari-hari yaitu antrian pada kasir pada sebuah
bank. Ketika seorang pelanggan datang, akan menuju ke belakang dari antrian. Setiap
pelanggan dilayani, antrian yang berada di depan akan maju. Jika kita ada di antrian
kedua, maka kita akan menunggu antrian pertama melakukan prosesnya. Ketika selesai
proses dari antrian pertama dia akan pergi, dan giliran kita untuk maju untuk melakukan
proses. Begitu juga arti dari antrian dalam bahasan kali ini, jika pengantri pertama datang
maka dia juga yang akan keluar pertama kali atau FIFO (First In First Out) dan FCFS
(First Come First Serve).

Kondisi antrian yang menjadi perhatian :

1. Penuh

Bila elemen pada antrian mencapai kapasitas maksimum antrian, maka tidak
mungkin dilakukan penambahan ke antrian. Penambahan elemen menyebabkan kondisi
kesalahan overflow (Menambahkan data keantrian tapi semua lokasi yg tersedia telah
ditempati).

2. Kosong

Bila tidak ada elemen di antrian. Pada kondisi ini, tidak mungkin dilakukan
pengambilan elemen dari antrian. Pengambilan elemen menyebabkan kondisi kesalahan
Underflow (apabila kita melakukan penghapusan pada antrean hampa).

3.3.2 Pada Pembelian Tiket

Dalam kehidupan sehari-hari kita bisa dapati melalui penerapan pembelian tiket
kereta api, tiket pesawat, tiket kapal laut, pembayaran tiket tol, pembayaran listrik,
pembayaran air, dan lain sebagainya. Saat mengantri di loket untuk membeli tiket. Istilah
yang cukup sering dipakai seseorang masuk dalam sebuah antrian adalah enqueue. Dalam

31
suatu antrian, yang datang terlebih dahulu akan dilayani lebih dahulu. Istilah yang sering
dipakai bila seseorang keluar dari antrian adalah dequeue. Walaupun berbeda
implementasi, struktur data queue setidaknya harus memiliki operasi-operasi sebagai
berikut :

a. EnQueue : Memasukkan data ke dalam antrian

b. DeQueue : Mengeluarkan data terdepan dari antrian

c. Clear : Menghapus seluruh antrian

d. IsEmpty : Memeriksa apakah antrian kosong

e. IsFull : Memeriksa apakah antrian penuh

Aplikasi dalam pembelian tiket kereta api :

• Enqueue : Seseorang membeli tiket melalui tempat pembayaran tiket yang


disediakan.

• Dequeue : Setelah membeli tiket, langsung menuju tempat penungguan


kereta, dengan sebelumnya petugas memeriksa cek tiket tersebut.

• Clear : Pembeli tiket tersebut telah terhapus dari antrian karena sudah melewati
pembayaran administrasi tersebut.

• IsEmpty : Petugas tiket Kereta melihat tidak ada lagi yang ingin membeli
tiket kereta.

• IsFull : Petugas Tiket Kereta melihat masih ada pembeli tiket kereta.

3.3.3 Antrian Mobil di Pintu Tol

Ketika sebuah mobil datang, dari belakang akan menuju kedepan dari antrian.
Setelah mobil mendapatkan karcis tol, antrian yang berada didepan akan maju. Pada saat
menempatkan data pada ujung (tail) dari queue disebut dengan enqueue. Pada saat
memindahkan data dari kepala (head) sebuah queue disebut dengan dequeue.

3.3.4 Karakteristik Sistim Antrian

Untuk mempertahankan pelanggan, sebuah organisasi selalu berusaha untuk


memberikan pelayanan yang terbaik. Pelayanan yang terbaik tersebut diantaranya adalah
32
memberikan pelayanan yang cepat sehingga pelanggan tidak dibiarkan menunggu
(mengantri) terlalu lama. Namun demikian, dampak pemberian layanan yang cepat ini
akan menimbulkan biaya bagi organisasi, karena harus menambah fasilitas layanan. Oleh
karena itu, layanan yang cepat akan sangat membantu untuk mempertahankan pelanggan,
yang dalam jangka panjang tentu saja akan meningkatkan keuntungan perusahaan.

Ada tiga komponen dalam sistim antrian yaitu :

1. Kedatangan , populasi yang akan dilayani (calling population)

2. Antrian

3. Fasilitas pelayanan

Masing-masing komponen dalam sistim antrian tersebut mempunyai karakteristik


sendiri-sendiri. Karakteristik dari masing-masing komponen tersebut adalah :

Karakteristik Antrian adalah bahwa terdapat kedatangan, antrian, dan pelayanan.

1. Kedatangan Populasi yang akan Dilayani (calling population)

Karakteristik dari populasi yang akan dilayani (calling population) dapat dilihat
menurut ukurannya, pola kedatangan, serta perilaku dari populasi yang akan dilayani.
Menurut ukurannya, populasi yang akan dilayani bisa terbatas (finite) bisa juga tidak
terbatas (infinite). Sebagai contoh jumlah mahasiswa yang antri untuk registrasi di sebuah
perguruan tinggi sudah diketahui jumlahnya (finite), sedangkan jumlah nasabah bank
yang antri untuk setor, menarik tabungan, maupun membuka rekening baru, bisa tak
terbatas (infinte).

Pola kedatangan bisa teratur, bisa juga acak (random). Kedatangan yang teratur
sering kita jumpai pada proses pembuatan/ pengemasan produk yang sudah
distandardisasi. Pada proses semacam ini, kedatangan produk untuk diproses pada bagian
selanjutnya biasanya sudah ditentukan waktunya, misalnya setiap 30 detik. Sedangkan
pola kedatangan yang sifatnya acak (random) banyak kita jumpai misalnya kedatangan
nasabah di bank. Pola kedatangan yang sifatnya acak dapat digambarkan dengan
distribusi statistik dan dapat ditentukan dua cara yaitu kedatangan per satuan waktu dan
distribusi waktu antar kedatangan.

Perilaku kedatangan. Populasi yang akan dilayani mempunyai perilaku yang


berbeda-beda dalam membentuk antrian. Ada tiga jenis perilaku: reneging, balking, dan
jockeying. Reneging menggambarkan situasi dimana seseorang masuk dalam antrian,
namun belum memperoleh pelayanan, kemudian meninggalkan antrian tersebut. Balking
33
menggambarkan orang yang tidak masuk dalam antrian dan langsung meninggalkan
tempat antrian. Jockeying menggambarkan orang yang pindah-pindah antrian.

2. Antrian

Batasan panjang antrian bisa terbatas (limited) bisa juga tidak terbatas
(unlimited). Sebagai contoh antrian di jalan tol masuk dalam kategori panjang antrian
yang tidak terbatas. Sementara antrian di rumah makan, masuk kategori panjang antrian
yang terbatas karena keterbatasan tempat. Dalam kasus batasan panjang antrian yang
tertentu (definite line-length) dapat menyebabkan penundaan kedatangan antrian bila
batasan telah tercapai. Contoh : sejumlah tertentu pesawat pada landasan telah melebihi
suatu kapasitas bandara, kedatangan pesawat yang baru dialihkan ke bandara yang lain.

3. Fasilitas Pelayanan

Karakteristik fasilitas pelayanan dapat dilihat dari tiga hal, yaitu tata letak (lay
out) secara fisik dari sistem antrian, disiplin antrian, waktu pelayanan.

4. Tata letak

Tata letak fisik dari sistem antrian digambarkan dengan jumlah saluran, juga
disebut sebagai jumlah pelayan. Sistem antrian jalur tunggal (single channel, single
server) berarti bahwa dalam sistem antrian tersebut hanya terdapat satu pemberi layanan
serta satu jenis layanan yang diberikan. Sementara sistem antrian jalur tunggal tahapan
berganda (single channel multi server) berarti dalam sistem antrian tersebut terdapat lebih
dari satu jenis layanan yang diberikan, tetapi dalam setiap jenis layanan hanya terdapat
satu pemberi layanan.

Sistem antrian jalur berganda satu tahap (multi channel single server) adalah
terdapat satu jenis layanan dalam sistem antrian tersebut , namun terdapat lebih dari satu
pemberi layanan. Sedangkan sistem antrian jalur berganda dengan tahapan berganda
(multi channel, multi server) adalah sistem antrian dimana terdapat lebih dari satu jenis
layanan dan terdapat lebih dari satu pemberi layanan dalam setiap jenis layanan.

3.4 Aplikasi Queue Dalam Software Aplikasi

Queue yang dalam bahasa Indonesia berarti antrian, juga dipakai sebagai salah
satu fitur dari Internet Download Manager atau yang biasa disebut dengan IDM. Fitur ini
sangat membantu bagi para pecinta download. Fitur ini akan membantu pengguna untuk
mendownload file yang anda pilih satu-persatu, jadi sebanyak apapun anda
34
mendownload, tetapi akan tetap dibuat antrian atau istilahnya queueing. Sistem yang
diterapkan dalam fitur ini adalah pada saat download file, maka IDM akan mendownload
satu per satu, hingga download file selesai maka baru akan secara otomatis mendownload
file berikutnya.

Berikut adalah tutorial cara menggunakan fitur queue:

1. Jalankan IDM dan download file-file yang anda inginkan.

2. Jika ada icon berwarna kuning maka itu menunjukkan main download queue.

3. Klik menu schduler (ikon berbentuk jam).

4. Jika sudah ok, klik Start Now dan proses download dimulai.

5. Pastikan menggunakan setting download 1 file at the same time dan pilihan Turn
off Computer when done tidak dalam keadaan tercentang.

3.5 Aplikasi Queue Dalam Jaringan

3.5.1 Printer Sharing

Pada suatu jaringan terdapat beberapa aplikasi yang dapat membantu kita untuk
mempermudah pekerjaan kita untuk melakukan cetak hanya dengan menggunakan 1
printer yang dapat dipakai oleh banyak orang yaitu dengan cara printer sharing. Aplikasi
ini menggunakan cara kerja queue atau juga disebut dengan antrian, untuk mencetak
suatu document yang hanya menggunakan 1 printer yang dapat diakses oleh orang
banyak, penggunaan queue diperlukan untuk mengatur sistem jaringan agar tidak terjadi
error, dengan cara siapa yang terlebih dahulu mencetak suatu dokumen, dia akan dilayani
terlebih dahulu untuk mencetak dokumen dan jika ada seseorang yang ingin mencetak
dokumen dia akan dimasukan kedalam antirian dan menunggu untuk dapat mencetak
sebuah document

Berikut adalah tutorial cara untuk menggunakan printer sharing :

1. Buka Control Panel, kemudian pilih Printer and Faxes, lalu klik kanan pada Printer kita
lalu pilih Sharing.

2. Lalu akan muncul Tab Sharing Properties, lalu pilihlan Checkbox Share this
printer,kemudian berikan nama yang kita inginkan,kemudian klik ok

35
3. Buka Control Panel lalu pilih Printer and Faxes , kemudian pada tab di sebelah kiri pilih
Add a Printer.

4. Selanjutnya akan terbuka Add Printer Wizard, Klik Next.

5. Pilih tipe printer yang akan kita digunakan, kemudian pilih Network Printer lalu kilk
Next.

6. Browse printer pada jaringan kita, lalu pilih kemudian klik Next.

7. Akhiri Wizard dengan klik Finish.

Penggunanan Queue dalam jaringan biasanya digunakan dalam jaringan mikrotik.


Fitur jaringan yang biasanya menggunakan queue adalah QOS (quality of service). Queue
adalah fitur QOS (quality of service) yang biasa disebut dengan Management Bandwidth.

QOS tidak selalu berarti pembatasan bandwidth. QOS adalah cara yang
digunakan untuk mengatur penggunaan bandwidth yang ada secara rasional. Qos bisa
digunakan juga untuk mengatur prioritas traffic berdasarkan parameter yang diberikan,
menghindari terjadinya traffic yang memonopoli seluruh bandwidth yang tersedia.

Tugas dari Mangement Bandwidth adalah untuk membagi Bandwith dan


memberikan limits atau Batasan pada suatu target baik berdasarkan pada single
host ( 1 client ), beberapa client, maupun berdasarkan Network.

Dalam Mikrotik, terdapat 3 jenis Queue yaitu.

1. Simple Queue, merupakan cara yang sangat mudah untuk membagi bandwidth dari
skala jaringan berukuran kecil hingga menengah. Biasa digunakan untuk mengatur
bandwidth upload dan download tiap user.

2. Queue Tree, adalah fitur yang digunakan untuk mengatur jumlah limit bandwidth yang
lebih kompleks. Biasa digunakan untuk membatasi satu arah koneksi untuk download
maupun upload.

3. PCQ (Per Connection Queue), adalah jenis Queue yang mampu mengenali arah arus
dan digunakan karena dapat membagi bandwidth secara adil, merata serta masif. PCQ
dapat digunakan bersamaan dengan fitur Queue baik yang simple maupun yang tree.

36
Perbedaan Simple Queue dan Queue Tree :

1. Simple Queue

• Memiliki aturan tentang urutan yang ketat, sehingga antrian diproses dari atas ke bawah.

• Mengatur aliran paket secara 2 arah

• Mampu membatasi trafik dan bandwidth berdasarkan alamat ip

• Satu antrian mampu membatasi trafik 2 arah sekaligus (upload/download)

• Queue ini akan diproses lebih dahulu jika diproses bersama Queue Tree

• Mendukung penggunaan PCQ sehingga pembagian bandwidth lebih adil dan merata.

• Pengaturannya sangat sederhana dan cenderung statis.

2. Queue Tree

• Tidak memiliki aturan, sehingga setiap urutan akan diproses secara bersamaan

• Mengatur aliran paket secara satu arah

• Membutuhkan pengaturan mangle pada firewall untuk membatasi trafik per IP

• Membutuhkan pengaturan mangle pada firewall untuk membedakan trafik download dan
upload

• Diproses setelah Queue Simple

• Pengaturan antrian murni melalui paket data yang ditandai di mangle pada firewall

3.5.2 Time Sharing System

Time Sharing System merupakan sistem yang membagi waktu prosesor kepada sejumlah
user, sehingga semua user dapat mengakses resource komputer secara bersamaan melalui terminal
(keyboard dan display) masing-masing user. Time Sharing System menggunakan queue untuk
melakukan pembagikan kapan waktu agar user dapat mengakses sebuah resource yang
menggunakan proccesor dan memory utama. Jika processor sedang dipakai oleh seorang user, maka
user yang lain harus antri sampai gilirannya, contohnya bila terdapat n user, maka setiap user
mendapatkan giliran waktu prosesor sebanyak 1/n dalam satu putaran. Jadi setiap user yang akan
mengakses sebuah resource dan yang pertama kali maka user tersebut yang akan dilayani terlebih

37
dahulu oleh server, dan jika ada user baru yang ingin mengakses sebuah resource maka user tersebut
harus mengantri atau menunggu giliran untuk dapat dilayani oleh server.

3.6 Aplikasi Queue Dalam Sistem Produksi

Dalam sistem produksi terdapat banyak sekali aplikasi antrian, misalnya pada mesin
pengisi (filling) botol minuman otomatis di pabrik. Mesin ini digunakan agar mempermudah
pekerjaan, meminimalisir waktu, dan masih banyak lagi manfaat lainnya. Cara kerja dari mesin
filling otomatis ini yaitu :

1. Beberapa botol disiapkan pada tempatnya.

2. Kemudian mesin akan mengisi air kedalam botol sesuai dengan posisinya.

3. Botol yang diletakkan paling depan akan diisi oleh mesin paling awal, setelah botol paling depan
terisi baru akan berjalan ke botol yang dibelakangnya, dan seterusnya.

Prinsip queue atau antrian digunakan dalam mesin ini, karena FIFO (First In First
Out). Jadi botol yang paling awal/depan sampai pada pengisi air, maka botol itu juga yang
akan pertama keluar/diisi.

3.7 Antrian Berprioritas

Dalam antrean yang telah dibahas di atas, semua elemen yang masuk dalam antrean dianggap
mempunyai prioritas yang sama, sehingga elemen yang masuk lebih dahulu akan diproses lebih dahulu.
Dalam praktek, elemen-elemen yang akan masuk dalam suatu antrean ada yang dikatakan mempunyai
prioritas yang lebih tinggi dibanding yang lain. Antrean yang demikian ini disebut dengan antrean
berprioritas (priority queue). Dalam antrean berprioritas, setiap elemenn yang akan msuk dalam antrean
sudah ditentukan lebih dahulu prioritasnya.

Dalam hal ini berlaku dua ketentuan, yaitu:

1. Elemen-elemen yang mempunyai prioritas lebih tinggi akan diproses lebih dahulu.

2. Dua elemen yang mempunyai prioritas sama akan dikerjakan sesuai dengan urutan pada saat
kedua elemen ini masuk dalam antrean.

Dengan memperhatikan kedua ketentuan di atas, akan berlaku ketentuan bahwa elemen yang
mempunyai prioritas lebih tinggi akan dikerjakan lebih dahulu dibanding elemen yang mempunyai
prioritas lebih rendah, meskipun elemen yang berprioritas tinggi masuknya sesudah elemen yang
berprioritas rendah. Salah satu contoh antrean berprioritas ini adalah pada sistem berbagi waktu (time-

38
sharing system) dimana program yang mempunyai prioritas tinggi akan dikerjakan lebih dahulu dan
program-program yang berprioritas sama akan membentuk antrean biasa.

Ada beberapa cara untuk mengimplementasikan antrean berprioritas. Salah satu caranya adalah
dengan menggunakan linked list. Jika kita menggunakan linked list, khususnya single linked list atau
double linked list, maka ada ketentuan lain yang perlu diperhatikan, yaitu: 1. Setiap node dari linked
list terdiri tiga bagian, yaitu bagian informasi, angka prioritas dan bagian-bagian penyambung ke simpul
lain. 2. Simpul X mendahului (terletak di sebelah kiri) simpul Y, jika prioritas X lebih tinggi dibanding
prioritas Y atau jika prioritas X dan Y sama, maka simpul X datang lebih dahulu dibanding dengan Y.
Biasanya dibuat suatu perjanjian bahwa angka prioritas yang lebih kecil menunjukkan derajad prioritas
yang lebih tinggi. Sebagai contoh, jika angka prioritas pada simpul X adalah 1 dan pada simpul Y adalah
2, maka dikatakan bahwa simpul X berprioritas lebih tinggi dibanding dengan simpul Y.

39
BAB IV

KESIMPULAN

4.1 Kesimpulan

Queue adalah sebuah elemen yang esensial dalam membuat database yang beroperasi dengan cara First
In First Out (FIFO), ibarat sebuah antrian di dunia nyata, dasar dari queue adalah penyisipan data di satu
ujung (rear), dan penghapusan di ujung yang lain (front).

Queue mempunyai operasi dasar seperti membuat queue baru, mengecek apakah queue tersebut kosong
atau tidak, mengecek apakah queue tersebut penuh atau tidak, memasukkan elemen ke dalam queue
(Enqueue), dan menghapus elemen dari queue (DeQueue).

Queue dapat direpresentasikan dengan empat cara, yaitu representasi sekuen, linier, melingkar, dan
dinamis.

Implementasi queue kedalam suatu program dapat menggunakan dua cara, yaitu dengan memakai array,
atau menggunakan linked list, queue juga mempunyai banyak contoh di dunia nyata, seperti saat
pembelian tiket, antrian mobil di pintu tol, dan sebagainya.

40
DAFTAR PUSTAKA

Andri, Kristanto. 2009. Algoritma & Pemrograman dengan C++ Edisi 2, Yogyakarta : Graha
Ilmu

Moh. Sjukani, Algoritma & Struktur Data dengan C, C++ dan JAVA, Mitra Wacana
Media,

Bandung, 2004.

Lafore, Robert. 2003. Data Structures & Algorithms in Java Second Edition. United States :
SAMS.

Sismoro, Heri., dan Krusrini, Iskandar. 2004. Sturktur Data dan Pemograman dengan PASCAL.
Yogyakarta : Penerbit Andi.

https://www.academia.edu/36009079/Modul_Struktur_Data_dan_Algoritma

https://www.academia.edu/26340400/MAKALAH_STRUKTUR_DATA_Aplikasi_Struktur_D
ata_Queue_Semester_2

https://www.cappluse.com/2018/02/dasar-analisis-algoritma-queue-atau.html

https://anzdoc.com/queue/queue-struktur-data-ini-banyak-dipakai-dalam-informatika-mis.html

41

Anda mungkin juga menyukai