Anda di halaman 1dari 16

MAKALAH

QUEUE

DISUSUN OLEH:
Nama : Nawa

Universitas Atma Jaya Makassar


Fakultas Sistem Informasi Prodi Teknk Informatika
2022/2023
KATA PENGANTAR
Puji syukur kehadirat Tuhan Yang Mahakuasa karena telah memberikan kesempatan pada
saya untuk menyelesaikan makalah ini. Atas rahmat dan hidaya-Nya lah saya dapat menyelesaikan
makalhh berjudul “Queue” tepat waktu. Makalah “Queue” disusun guna memenuhi tugas dari
dosen Alfredo Gormantara, S.kom., M.kom pada mata kuliah Universitas Atma Jaya Makassar.
Selain itu penulis juga berharap agar makalah ini dapat menambah wawasan bagi pembaca tentang
Queue.
Penulis mengucapkan terima kasih sebesar-besarnya kepada bapak Alfredo Gormantara,
S.kom., M.kom selaku dosen mata kuliah. Tugas yang diberikan ini dapat menambah pengetahuan
dan wawasan terkait bidang yang ditekuni penulis.
Karena keterbatasan pengetahuan maupun pengalaman maka kami yakin banyak
kekurangan dalam makalah ini. Oleh karena itu, kami sangat mengharapkan kritik dan saran yang
membangun dari pembaca demi kesempurnaan makalah ini.
Akhir kata, semoga makalah ini dapat berguna bagi para pembaca.

Tana Toraja, 22 Juni 2022

Pengusun
QUEUE
PENGERTIAN QUEUE
Queue adalah struktur data atau antrian adalah sekumpulan data yang mana
penambahan elemen hanya bias dilakukan pada suatu ujung disebut dengan sisi belakang
(rear). Dan penghapusan (pengambilan elemen) dilakukan lewat ujung lain (disebut dengan
sisi depan atau font), pada Queue atau antrian prinsip yang digunakan adalah “Masuk
pertama keluar pertama“ atau dengan sebutan FIFO (first In First Out).
Queue atau antrian banyak kita jumpai dalam kehidupan sehari-hari, sebagai contoh
yang dapat diambil: antrian mobil di tiket Tol, antrian mahasiswa mendaftar, dan masih
banyak lagi contoh lainnya.a+
Contoh lain di bidang komputer adalah pemakaian sistem komputer berbagi waktu
(time sharing computer system) dimana ada sejumlah pemakai yang akan menggunakan
sistem tersebut secara serempak.

Pada Queue atau antrian terdapat satu buah pintu masuk disuatu ujung dan satu buah
pintu keluar diujung satunya dimana membutuhkan variabel Head dan Tail (depan/front,
belakang/rear.

Contoh:

Front Rear

5 6 7 9

Operasi-operasi dasar dari sebuah queue adalah :


1. Enqueue : proses penambahan atau memasukkan satu elemen di belakang
2. Dequeue : proses pengambilan atau mengeluarkan satu elemen di posisi depan

Representasi Queue :
1. Menggunakan Array Statis
a. Deklarasi secara umum :
Const
MaksQueue =…….
Type
TypeQueue = array [1..MaksQueue] of typedata
VarQueue : TypeQueue
Front, Rear : integer
b. Penciptaan Queue (Create queue )
Proses pemberian nilai 0 untuk variabel penunjuk depan(Front) dan variabel
penunjuk belakang(Rear) dari queue, yaitu:
Front 0
Rear 0
c. Fungsi Kosong
Fungsi kosong digunakan untuk memeriksa apakah keadaan queue tidak
memiliki elemen. Fungsi kosong didapatkan dengan memeriksa penunjuk Rear
dari queue. Jika penunjuk Rear bernilai nol (0), maka berarti queue kosong dan
jika tidak nol, maka berarti queue mempunyai elemen.
Function Kosong (Input Rear : integer) Boolean
{I.S : penunjuk Rear pada queue sudah terdefinisi}
{F.S : menghasilkan fungsi kosong}
Kamus:
Algoritma :
Kosong false
If (Rear =0) then
Kosong True
EndIf
EndFunction
d. Fungsi Penuh
Fungsi penuh berguna untuk memeriksa apakah suatu queue telah penuh atau
belum. Fungsi ini diperlukan ketika proses enqueue. Fungsi ini akan bernilai
benar (true) jika penunjuk Rear sama dengan nilai Maksimum Queue jika tidak
sama berarti queue belum penuh.
Function Penuh (Input Rear : Integer) Boolean
{I.S : penunjuk Rear pada queue sudah terdefinisi}
{F.S : menghasilkan fungsi penuh}
Algoritma :
Penuh false
If (Rear =MaksQueue) ThenPenuh True
EndIf
EndFunction
e. Proses enqueue (dengan memeriksa Queue kosong/tidak dan Queue
penuh/tidak)
 Proses enqueue adalah proses untuk penambahan di posisi Rear.
 Penambahan ini dilakukan jika kondisi queue tidak penuh.
 Jika keadaan masih kosong, maka posisi Front dan Rear bernilai 1 tetapi
jika sudah mempunyai elemen, maka nilai Rear harus bertambah 1.
 Kemudian data baru disimpan di queue pada posisi Rear.

Procedure Enqueue (I/O Front,Rear : integer, Input elemen : tipedata)


{I.S : penunjuk Front dan Rear serta data yang akan dimasukkan kequeue
(elemen) sudah terdefinisi}
{F.S : menghasilkan queue yang sudah bertambah satu data}
Kamus:
Algoritma :
If (Kosong(Rear)) ThenFront 1
Rear 1
Else
If (Not Penuh(Rear)) Then
Rear Rear + 1
Endif
EndIf
Queue(Rear) elemen
EndProcedure
f. Proses Dequeue
 Operasi dequeue adalah proses pengambilan satu elemen dari queue.
Tentunya elemen yang diambil selalu dari elemen pertama (1).
 Setelah elemen pertama diambil, maka akan terjadi proses pergeseran
elemen data setelah elemen data yang diambil (dari posisi ke-2 sampai
posisi paling belakang), dan kemudian posisi Rear akan berkurang 1 karena
ada data yang diambil.
Procedure Dequeue (I/O Front,Rear : integer, Output elemen : tipedata)
{I.S : penunjuk Front dan Rear sudah terdefinisi}
{F.S : menghasilkan queue yang sudah berkurang satu data}
Kamus:
i : integer
Algoritma :
If (Not Kosong(Rear)) Then
elemen Queue(Front)
For i Front to (Rear-1) doQueue(i)
Queue(i+1)
Endfor
Rear Rear - 1
EndIf
EndProcedure
2. Menggunakan Array Dinamis (Single Linked List)
Proses penyimpanan elemen queue dalam linked list mirip dengan operasi pada single
linked list yang menggunakan penyisipan di akhir/belakang dan penghapusan di
awal/depan.
Contoh :

Front
Operasi-operasi yang dapat dilakukan dalam queue yang menggunakan representasi
linked list adalah :
2.1. Pendeklarasian sebuah queue
Setiap queue memiliki penunjuk berupa pointer Front, pointer Rear, elemen antrian,
dan pointer penunjuk ke elemen berikutnya. Berikut ini adalah pendeklarasian queue
yang disimpan dalam bentuk linked list.
Type
NamaPointer = ↑Simpul
Simpul = Record
Info : Tipedata Next :
NamaPointer
EndRecord
Front, Rear : NamaPointer
2.2. Penciptaan Queue
Proses inisialisasi queue yang disimpan dalam bentuk linked list adalah dengan
memberikan nilai nil ke pointer Front dan Rear yang menandakan bahwa queue masih
kosong.
Front Nil
Rear Nil
2.3. Fungsi Kosong
Fungsi ini berguna untuk memeriksa apakah suatu queue dalam keadaan kosong.
Fungsi ini berguna ketika proses dequeue yaitu ketika sebuah elemen akan diambil,
maka harus diperiksa dulu apakah memiliki data atau tidak. Fungsi ini akan
mempunyai nilai benar jika Front atau Rear bernilai nil.
Function Kosong(Input Front:NamaPointer) Boolean
{I.S : penunjuk Front pada queue sudah terdefinisi}
{F.S : menghasilkan fungsi kosong}
Kamus:
Algoritma :
Kosong false
If (Front = Nil) Then
Kosong True
EndIf
EndFunction
2.4. Operasi Enqueue
 Proses enqueue dalam queue linked list adalah dengan menambahkan elemen
baru ke posisi paling belakang.
 Setelah itu, pointer penunjuk Rear harus berpindah ke posisi baru tersebut.
 Proses ini seperti proses penyisipan di belakang/akhir pada single linked list.

Procedure Enqueue (I/O Front,Rear:NamaPointer, Input elemen:tipedata)


{I.S : penunjuk Front dan Rear serta data yang akan dimasukkan ke queue
(elemen) sudah terdefinisi}
{F.S : menghasilkan queue yang sudah bertambah satu data}
Kamus:
Baru : NamaPointer
Algoritma :
Alloc (Baru) Baru↑.Info
elemen
If (Kosong(Front)) ThenFront Baru
Else
Rear↑.Next Baru
Endif
Rear Baru Baru↑.Next Nil

EndProcedure
2.5. Operasi Dequeue
 Proses dequeue untuk queue linked list adalah dengan mengambil data yang
ditunjuk pointer Front.
 Pointer Front harus berpindah ke elemen antrian berikutnya. Proses tersebut
dilakukan hanya jika linked list tidak kosong. Proses ini mirip dengan proses
penghapusan di awal/depan pada single linked list.
Procedure Dequeue(I/O Front,Rear : NamaPointer, Output elemen : tipedata)
{I.S : penunjuk Front dan Rear sudah terdefinisi}
{F.S : menghasilkan queue yang sudah berkurang satu data}
Kamus:

Phapus : NamaPointer
Algoritma :

If (Not Kosong(Rear)) ThenPhapus


Front

Elemen Front↑.Info If
(Front = Rear) Then
Front Nil

Rear Nil
Else
Front Front↑.Next
EndIf
Dealloc(Phapus)

Endif
EndProcedure
QUEUE DENGAN CIRCULAR ARRAY

Jika kita menggunakan array untuk queue seperti di atas, maka ketika ada proses
pengambilan (dequeue) ada proses pergeseran data. Proses pergeseran data ini pasti
memerlukan waktu apalagi jika elemen queue-nya banyak. Oleh karena itu solusi agar proses
pergeseran dihilangkan adalah dengan metode circular array.
Queue dengan circular array dapat dibayangkan sebagai berikut :

Front = 1 Rear = 4
5 6 7 9

Atau agar lebih jelas, array di atas dapat dibayangkan ke dalam bentuk sepertilingkaran
di bawah ini.

4 2

3
Front = 1
Rear = 4
Aturan-aturan dalam queue yang menggunakan circular array adalah :
1. Proses penghapusan dilakukan dengan cara nilai depan (Front) ditambah 1 :
Front = Front + 1.
2. Proses penambahan elemen sama dengan linear array yaitu nilai belakang(Rear)
ditambah 1 : Rear = Rear + 1.
3. Jika Front = MaksQueue dan ada elemen yang akan dihapus, maka nilai Front = 1.
4. Jika Rear = MaksQueue dan Front tidak 1 maka jika ada elemen yang akan
ditambahkan, nilai belakang=1
5. Jika hanya tinggal 1 elemen di queue (Front = Rear), dan akan dihapus, maka Front
diisi 0 dan Rear diisi dengan 0 (queue kosong).

Operasi-operasi yang dapat terjadi dalam queue yang menggunakan circular array adalah :
1. Penciptaan queue
Penciptaan queue adalah proses pemberian nilai 0 untuk penunjuk Front dan penunjuk
Rear dari queue
Front 0
Rear 0
2. Fungsi Kosong
Suatu queue yang menggunakan circular array dapat dikatakan kosong jika nilai dariposisi
Front atau Rear mempunyai nilai 0.
Function Kosong(Input Front : Integer) Boolean
{I.S. : Penunjuk Front sudah terdefinisi}
{F.S. : Menghasilkan fungsi kosong}
Kamus:

Algoritma :
Kosong false
If (Front = 0) ThenKosong
true

EndIf
EndFunction

3. Fungsi Penuh
Suatu queue akan disebut penuh jika terjadi 2 hal yaitu
 Jika Front ada diposisi 1 dan Rear ada diposisi MaksQueue
 Atau jika Front bernilai sama dengan posisi Rear +1.

Function Penuh (Input Front, Rear : Integer) Boolean


{I.S. : Penunjuk Front dan Rear sudah terdefinisi}
{F.S. : Menghasilkan fungsi penuh}
Kamus:

Algoritma :
Penuh False
If ((Front = 1) and (Rear = maks)) or (Front = Rear+1) ThenPenuh True

EndIf
EndFunction

5. Operasi Enqueue
Proses enqueue hanya bisa dilakukan jika queue tidak kosong. Ada beberapa hal yang
harus diperhatikan ketika akan melakukan enqueue pada circular array, diantaranya
adalah:
 Kondisi ketika queue masih kosong. Jika ini terjadi, maka posisi Front dan Rear
bernilai 0.
 Ketika nilai Rear sama dengan MaksQueue, maka posisi Rear bernilai 1
 Ketika nilai Rear masih lebih kecil dari MaksQueue, maka posisi Rear ditambah 1 :
Rear = Rear + 1
Procedure Enqueue (Input elemen : tipedata, I/O Front,Rear : Integer)
{I.S. : Data yang akan dimasukkan (elemen), penunjuk Front dan penunjukRear
sudah terdefinisi}

{F.S. : Menghasilkan Queue yang sudah bertambah satu data}


Kamus:

Algoritma :
If (Kosong(Front)) Then
Front 1

Rear 1Else

If (Not Penuh(Front,Rear)) ThenIf


(Rear = MaksQueue) Then

Rear 1
Else

Rear Rear + 1
EndIf
Queue(Rear) elemen
EndIf

EndProcedure
4. Operasi Dequeue
Proses dequeue hanya bisa dilakukan jika queue dalam keadaan tidak kosong. Ada
beberapa kondisi yang harus diperhatikan ketika dequeue elemen queue yaitu :
 Kondisi ketika posisi Front sama dengan posisi Rear (queue hanya memiliki 1
elemen), maka nilai Front dan Rear bernilai 0 (queue kosong).
 Jika posisi Front sama dengan MaksQueue maka posisi Rear menjadi 1.
 Selain itu, posisi Front ditambah dengan 1 : Front = Front + 1

Procedure Dequeue (Output elemen : tipedata, I/O Front, Rear : Integer)


{I.S. : Penunjuk Front dan penunjuk Rear sudah terdefinisi}
{F.S. : Menghasilkan Queue yang sudah berkurang satu data}
Kamus:
Algoritma :
If (Not Kosong(Front)) ThenIf
(Front = Rear) Then
Front 0
Rear 0
Else
If (Front = MaksQueue) ThenFront
1

Else
Front Front + 1
EndIf
EndIf

EndProcedure
SOAL QUEUE
Buatlah program menu yang mengimplementasikan queue yang dapat menyimpan data
mahasiswa (stambuk, nama, nilai ujian mid, dan nilai ujian final) dimana program
tersebut dapat melakukan proses sebagai berikut :
a. Proses enqueue data
b. Proses dequeue data
c. Proses melihat isi queue
Pembahasan:
 Pertama, saya membuat class ProjekQueue1:

public class ProjekQueue1 {


public static void main(String[] args) {
}
}
 Memasukkan Import java.util.Scanner di atas nama class.
Untuk memasukkan Scanner ke dalam program, dapat mempersingkat dan
mempermudah dalam memprogram:

import java.util.Scanner;

 Kemudian saya menginput data yang akan di proses, yakni stambuk. Kemudian
saya mengunakan string pada data Nama,Mid,Final karna yang saya masukkan
berupa karakter yang membentuk teks; kemudian saya masukkan “mahasiswa
next” agar data mahasiswa bias lanjut di proses hingga pada pilihan terakhir:

int Stambuk;
String Nama,Mid,Final;
mahasiswa next;
static Scanner in=new Scanner(System.in);
static Scanner str=new Scanner(System.in);

 Kemudian saya membuat satu method lagi yaitu method input, untuk
menambahkan data kedalam program, system.out.println pada program yaitu
untuk menampilkan output ke user. Lalu nextLine untuk menampilkan output
selanjutnya. kemudian setelah saya memasukkan data pada bagian terakhir saya
tambahkan next=null agar pada bagian terakhir akan bernilai kosong atau tidak
ada nilai

public void input(){


System.out.print("Masukkan Stambuk : ");
Stambuk=in.nextInt();
System.out.print("Masukkan Nama : ");
Nama=str.nextLine();
System.out.print("Nilai Ujian Mid : ");
Mid=str.nextLine();
System.out.print("Nilai Ujian Final : ");
Final=str.nextLine();
next=null;
 Kemudian saya menambahkan lagi satu method yaitu method read agar data yang
telah saya input tadi akan muncul pada output yang akan di isi oleh user:

public void read(){


System.out.println("|| "+Stambuk+" \t|| "+Nama+" \t|| "+Mid+" \t||
"+Final+" \t||");

 Saya membuat lagi satu method yaitu method public static void main untuk
memanggil nethod main. Kemudian saya memasukan beberapa data dengan
perintah system.out.println() agar dapat menampilkannya pada hasil output
nantinya.

public static void main(String[] args) {


// TODO code application logic here

int menu=0;
linked que=new linked();
while(menu!=4){
System.out.println("MENU MAHASISWA");
System.out.println("============== ");
System.out.println("Data Mahasiswa: ");
System.out.print("1.Proses Enqueue\n2.Proses Dequeue\n3.Melihat Isi
Queue\n4.Exit\nMasukkan Pilihan Berupa (Angka): ");
menu=in.nextInt();
if(menu==1)que.enque();
else if(menu==2)que.deque();
else if(menu==3)que.view();
else if(menu==4)System.out.println("- keluar -");
else System.out.println("- Salah -");
System.out.println("");

}
}
 Saya menambahkan method linkedlist sebagai node terakhir yang menunjukkan
ke null yang akan digunakan sebagai kondisi berhenti pada LinkedList.

class linked{
bank head,tail;
public linked(){
head=null;
tail=null;
}

 Menambahkan satu method ke dalam program yaitu method enque untuk


melakukan proses enqueue untuk menambahkan data baru:

public void enque(){


mahasiswa baru=new mahasiswa();
baru.input();
if(head==null)head=baru;
else tail.next=baru;
tail=baru;
}

 Menambahkan method dequeue ke dalam program untuk menghapus value di


kepala antrian atau awal antrian, dan menganntinya dengan value di
belakangnya, dan terus melakukan hingga di ekor antrian atau akhir antrian.
Dengan melakukan dequeue artinya mengurangi total antrian.

public void deque(){


if(head==null)System.out.println("- Kosong -");
else{
System.out.println("Keluar Data Dengan Stambuk: "+head.Stambuk);
head=head.next;
}
}

 Yang terakhir saya menambahkan satu method lagi yaitu method view untuk
memeriksa data dalam queue.

public void view(){


if(head==null)System.out.println("- Kosong -");
else{
System.out.println("|| Stambuk \t|| Nama \t|| Nilai Mid \t|| Ujian Final
\t||");
for(bank a=head; a!=null; a=a.next) a.read();
}
}
}

Berikut hasil outputnya:


run:
MENU MAHASISWA
==============
Data Mahasiswa:
1.Proses Enqueue
2.Proses Dequeue
3.Melihat Isi Queue
4.Exit
Masukkan Pilihan Berupa (Angka):
1
Masukkan Stambuk : 2161038
Masukkan Nama : Nawa
Masukkan Nilai Ujian Mid : 2161038
Masukkan Nilai Ujian Final : 21

MENU MAHASISWA
==============
Data Mahasiswa:
1.Proses Enqueue
2.Proses Dequeue
3.Melihat Isi Queue
4.Exit
Masukkan Pilihan Berupa (Angka): 3
|| Stambuk || Nama || Nilai Mid || Ujian Final ||
|| 2161038 || Nawa || 21 ||

MENU MAHASISWA
==============
Data Mahasiswa:
1.Proses Enqueue
2.Proses Dequeue
3.Melihat Isi Queue
4.Exit
Masukkan Pilihan Berupa (Angka): 4
- keluar -

BUILD SUCCESSFUL (total time: 56 seconds)


KESIMPULAN

Queue merupakan kumpulan data dengan penambahan data hanya melalui satu sisi yaitu belakang
>tail dan penghapusan data hanya melalui sisi depan >head. Elemen yang pertama kali masuk
kedalam queue disebut elemen depan >+r*nt@rear =queue sedangkan elemen yang terakhir Kali
masuk ke dalam queue disebut elemen belakang >rear@tail*+ =queue. Penambahan elemen selalu
dilakukan melalui salah satu ujung menempati p sisi di belakang elemen-elemen yang sudah masuk
sebelum atau menjadi elemen paling belakang. Sedangkan penghapusan elemen dilakukan di
ujung yang berbeda yaitu p sisi elemen yang masuknpaling awal atau elemen terdepan.

Anda mungkin juga menyukai