Contoh Makalah Queue
BAB I
PENDAHULUAN
1.1. Latar Belakang Masalah
Queue/antrian adalah ordered list dengan penyisipan di satu ujung,
sedang penghapusan di ujung lain. Ujung penyisipan biasa disebut rear/tail,
sedang ujung penghapusan disebut front/head. Fenomena yang muncul
adalah elemen yang lebih dulu disisipkan akan juga lebih dulu diambil.
Queue berdisiplin FIFO (First In, First Out). Queue merupakan kasus khusus
ordered list. Dengan karakteristik terbatas itu maka kita dapat melakukan
optimasi representasi ADT Queue untuk memperoleh kerja paling optimal.
Karakteristik Queue memang terbatas, tetapi Queue merupakan kakas
dasar penyelesaian masalah-masalah besar, seperti simulasi fenomena
antrian di dunia nyata, serta fenomena antrian di pengolahan data.
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
pengoprasiannya, sedangkan Representasi dinamis biasanya menempati
memori berupa Record keduanya dideklarasikan menggunakan bahasa
pemograman pascal.
1.2.Judul Makalah
Laporan makalah ini berjudul “Queue (Antrian)”, laporan ini
perkuliahan, terutama mata kuliah Struktur Data khususnya bagi
mahasiswa/i secara cepat dan mudah dalam memahami konsep antrian
yang sesungguhnya.
BAB II
PEMBAHASAN
2.1. Deskripsi Queue
Queue/antrian adalah ordered list dengan penyisipan di satu ujung,
sedang penghapusan di ujung lain. Ujung penyisipan biasa disebutrear/tail,
sedang ujung penghapusa disebut front/head. Fenomena yang muncul
adalah elemen yang lebih dulu disisipkan akan juga lebih dulu diambil.
Queue berdisiplin FIFO (First In, First Out). Queue merupakan kasus khusus
ordered list. Dengan karakteristik terbatas itu maka kita dapat melakukan
optimasi representasi ADT Queue untuk memperoleh kerja paling optimal.
1.Elemen a1 adalah elemen paling depan
2.Elemen ai adalah diatas elemen ai-1, di mana 1<i<n.
3.Elemen an adalah elemen paling belakang
Head (atau front) menunjuk ke awal antrian Q (atau elemen terdepan),
sedangkan tail ( rear) menunjuk akhir antrian Q (atau elemen paling
belakang).Disiplin FIFO pada Queue berimplikasi jika elemen A, B, C, D, E
dimasukkan ke Queue, maka penghapusan/pengambilan elemen akan
terjadi dengan urutan A, B, C, D, E.
2.2 Karakteristik Queue
Karakteristik penting antrian sebagai berikut :
1.Elemen antrian yaitu item-item data yang terdapat di elemen antrian.
2.Head/front (elemen terdepan dari antrian ).
3.Tail/rear (elemen terakhir dari antrian ).
5.Status/kondisi antrian.
Kondisi antrian yang menjadi perhatian adalah :
Penuh
Bila elemen di antrian mencapai kapasitas maksimum antrian. Pada
kondisi ini, tidak mungkin dilakukan penambahan ke antrian. 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 Operasi-Operasi Pokok di Queue
Operasi-operasi pokok antrian sebagai berikut :
1.createQueue (Q), atau constructor menciptakan antrian kosong Q.
3.removeQueue (Q, X)atau mengambil elemen depan di antrian Q ke
elemenX.
Operasi-operasi pengaksesan tambahan yang dapat dilakukan
adalah :
1.headQueue (Q), atau Front (Q, X) mengirim elemen terdepan tanpa
menghapus.
2.tailQueue (Q), mengirim elemen tanpa menghapusnya.
Operasi-0perasi Query tambahan yang dapat dilakukan adalah :
1.isEmptyQueue (Q), mengirim apakah antrian Q adalah kosong.
2.isFullQueue (Q), mengirim apakah antrian Q adalah penuh bila kapasitas
antrian Q didefinisikan.
3.isOverflowQueue (Q), mengirim apakah antrian Q telah
4.isUnderflowQueue (Q), mengirim apakah antrian Q mengalamiunderflow.
Operasi-operasi terhadap seluruh antrian Q antara lain adalah :
1.sizeQueue (Q), mengetahui jumlah elemen di antrian Q.
2.isEqualQueue (Q1, Q2), mengirim apakah antrian Q1 dan Q2 sama isinya.
Jumlah operasi pokok Queue tidak banyak. Dengan demikian, sangat
sederhana untuk menyatakan apa pun mengenai implementasinya.
2.4. 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.
1.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.
2. System produksi
Barisan bahan atau komponen yang akan diproses suatu mesin.
Barisan bahan atau komponen yang akan diproses suatu manusia
Untuk lebih jelasnya,dbawah ini ada contoh dalam bentuk coding C++
#include <iostream.h>
#include <stdio.h>
#include <conio.h>
{
int cek=0, data[8], x, hapus;
char pil;
do {
clrscr();
cout<<” Ujian Praktikum Struktur Data Queue”<<endl;
cout<<” ISI NAMA ANDA”<<endl;
cout<<” ISI NAMA KAMPUS ANDA”<<endl;
cout<<endl;
printf(“d. Masukan Data Antrian\n”);
printf(“e. Hapus Data Antrian\n”);
printf(“n. Lihat Data Antrian\n”);
printf(“y. Exit Program\n”);
printf(“Ketikan Huruf Dari Salah Satu Pilihan Diatas… “);
pil=getche();
cout<<endl;
if(pil!=’d’ && pil !=’e’ && pil !=’n’ && pil!=’y’ )
printf(“\n\nSalah Ketik, Ulangi Lagi…\n”);
else
{
if(pil==’d’) //PUSH
{
if(cek==8)
printf(“\nAntrian Penuh\n”);
else
printf(“\nMasukkan angka–>”);scanf(“%i”,&x);
data[cek]=x;
cek++;
}}
else
{
if(pil==’e’) //POP
{
if(cek==0)
printf(“\nMaaf Tidak Antrian Untuk Dihapus \n\n”);
else
{
hapus=data[0];
data[v]=data[v+1];
data[cek-1]=NULL;
cek–;
cout<<endl;
printf(“Yakin Anda Ingin Data Ini DiHapus ??? “);
cout<<endl;
printf(“\nData dgn nilai=%i akan terhapus. [Tekan Enter]”,hapus);
}
getch();
}
else
{
if(pil==’n’) //Mengecek Data
if(cek==0)
printf(“\nMaaf Tidak Ada Antrian Untuk Ditampilkan.\n\n”);
else
{
printf(“\n”);
for(int z=0;z<cek;z++)
{
printf(” { “);
printf(“%i”,data[z]);
printf(” } “);
}
getch();
}
}
}
}
}while(pil!=’y’);
cout<<endl;
cout<<endl;
printf(“Yakin anda ingin keluar…??? {{{Tekan Enter Cak}}} “);
pil=getche();
Tambahan Contoh Makalah Queue
Queue adalah salah satu list linier dari struktur data. Queue beroperasi
dengan cara First In First Out (FIFO) elemen pertama masuk merupakan
elemen yang pertama keluar. Untuk penyisipan (INSERT) hanya dapat
dilakukan pada satu sisi yaitu sisi belakang (REAR), sedangkan untuk
penghapusan (REMOVE) pada sisi depan (FRONT) dari list.
Sebagai gambaran, cara kerja queue dapat disamakan pada sebuah
antrean di suatu loket dimana berlaku prinsip ‘ siapa yang duluan antre dia
yang akan pertama kali dilayani ‘ , sehingga dapat dikatakan prinsip kerja
queue sama dengan prinsip sebuah antrean.
hapus elemen 1 2 …….. ke – n sisip elemen
front rear
Di bawah ini diperlihatkan suatu queue yang akan menempati N elemen
array memori, serta cara pengurangan (delete) dan penambahan (added)
elemen pada queue tersebut.
Front : 1
Rear : 4
1 2 3 4 5 6 7 ... N
REMOVE(Q)
Front : 2
Rear : 4
1 2 3 4 5 6 7 ... N
A B C D ...
INSERT(INSERT(E),F)
Front : 2
Rear : 6
1 2 3 4 5 6 7 ... N
REMOVE(Q)
Front : 3
Rear : 6
1 2 3 4 5 6 7 ... N
Dapat dilihat bahwa setiap terjadi penghapusan elemen pada queue nilai
(index) dari Front bertambah satu (1) ; dapat ditulis FRONT := FRONT+1
Begitu pula bila terjadi penambahan elemen pada queue nilai (index) Rear
bertambah satu (1) ; dapat ditulis REAR := REAR + 1
Akan terjadi ketidakefisienan bila penambahan elemen sudah pada posisi
index N (Rear = N) maka tidak dapat lagi dilakukan penambahan elemen,
B C D E F ...
sedangkan dilokasi memori yang lain (nilai di bawah N) masih terdapat
memori array yang kosong.
Untuk mengatasi hal tersebut maka kita bayangkan bahwa memori dari
queue tersebut berbentuk melingkar dimana kedua ujungnya saling
bertemu atau disebut juga dengan Circular Queue
Circular Queue
Anggap Queue ini mempunyai ukuran m elemen. Karena sisip elemen di
lakukan pada satu sisi dan hapus elemen dilakukan pada sisi yang lain,
maka Q(m) disatukan dengan Q(1) {adjacent}.
Pada gambar di bawah, elemen-elemen queue menduduki tempat Q(f)
sampai dengan Q(r) dimana pointer Front menunjuk ke Q(f) dan pointer
REAR menunjuk ke Q(r). Kondisi overflow terjadi jika (r+1) mod m = f dan
kondisi underflow terjadi jika r = f = 0
Front Q(m) Q(1) Q(2)
. . . Q(f)
Q(1
)
Q(2) ... Q(f) Q(f+1) ... Q(r) ... Q(m)
Ket. Gambar diarsir adalah tempat kedudukan elemen-elemen queue dari
Q(f) sampai Q(r)
Contoh :
Suatu queue akan menempati lokasi sebanyak 5 array memori, dengan
urutan operasi sebagai berikut :
1. Create(Q) F = 0
. . .
Q(r) Rear
R = 0
1 2 3 4 5
2. Insert A, B, C F = 1
R = 3
3. Remove (Q) F = 2
R = 3
4. Insert D dan E F = 2
R = 5
5. Remove(Remove(Q)) F = 4
R = 5
A B C
B C
B C D E
6. Insert F F = 4
R = 1
7. Remove(Q) F = 5
R = 1
8. Insert G, H, K F = 5
R = 4
9. Insert L F = 5
( OVERFLOW ) R = 4
10. Remove(Remove(Q)) F = 2
R = 4
11. Insert L F = 2
F D E
F E
F G H K E
F G H K E
G H K
R = 5
12. Remove(Remove(Q)) F = 4
R = 5
13. Remove(Remove(Q)) F = 0
R = 0
14. Remove(Q) F = 0
R = 0
( UNDERFLOW )
K L
Operasi dasar pada Queue
1. CREATE
Adalah suatu operator untuk membentuk dan menunjukkan suatu
antrean hampa Q.
Noel ( Create(Q)) = 0
Front (Create(Q))= tidak terdefinisi
Rear (Create(Q)) = tidak terdefinisi
2. ISEMPTY
Adalah operator yang menentukan apakah antrean Q hampa atau tidak.
Hasil dari operator ini merupakan tipe data berjenis Boolean.
Isempty (Q) = True , jika Q hampa
3. INSERT
Suatu operator yang menyisipkan elemen ke dalam queue pada bagian
belakang (rear)
- REAR (INSERT(A,Q)) = A
- ISEMPTY (INSERT(A,Q)) = FALSE
Algoritma QINSERT
1. if FRONT = 1 and REAR = N , or If FRONT = REAR + 1, then
OVERFLOW, Return
2. if FRONT := NULL, then
set FRONT := 1 and REAR := 1
else if REAR = N , then
set REAR := 1
else
set REAR := REAR + 1
3. set QUEUE [REAR] := ITEM
4. Return
4. REMOVE
Algoritma QDELETE
1. if FRONT := NULL , then UNDERFLOW , Return
2. set ITEM := QUEUE[FRONT]
3. [find new value of FRONT]
if FRONT = REAR , then
set FRONT := NULL and REAR := NULL
else if FRONT = N, then
set FRONT := 1
else
set FRONT := FRONT + 1
4. Return
Latihan :
1. Diketahui Queue menempati 6 array memori
Jika dilakukan operasi berturut-turut sebagai berikut :
a. Insert X
b. Remove (Queue)
c. Remove (insert(M,Queue))
d. Insert (S, Remove(Queue))
Maka hasilnya adalah :
2. Diketahui Queue dengan 7 array memory
Nilai awal Front = 2 dan Rear = 4
Jika dilakukan operasi secara berturutan :
a. Insert MM
b. Remove (Queue)
c. Insert (SS,insert(PP,insert,(KK,)))
d. Remove (Remove(Queue))
Maka Hasilnya adalah :
a. Queue : ---, CC , AA , BB , ... , ..., ...
FRONT =
REAR =
b. Queue : .... , ... , ... , ... , ... , ... , ...
FRONT =
REAR =
c. Queue : .... , ... , ... , ... , ... , ... , ...
FRONT =
REAR =
Queue : .... , ... , ... , ... , ... , ... , ...
FRONT =
REAR =
Queue : .... , ... , ... , ... , ... , ... , ...
FRONT =
REAR =
d. Queue : .... , ... , ... , ... , ... , ... , ...
FRONT =
REAR =
Queue : .... , ... , ... , ... , ... , ... , ...
FRONT =
DEQUEUE (DOUBLE ENDED QUEUE)
DEQUEUE adalah suatu List Linier, yang penambahan dan penghapusan
elemen-nya dapat dilakukan pada kedua sisi ujung List, tetapi tidak dapat
dilakukan ditengah-tengah list. Dari sini dapat kita katakan bahwa Dequeue
adalah suatu Queue ganda atau Double Ended Queue.
Deque menggunakan dua pointer penunjuk yaitu :
LEFT : petunjuk untuk elemen pada posisi kiri RIGHT : petunjuk untuk elemen pada posisi kanan
Sebagai gambaran :
AAA BBB CCC DDD
Left : 4
Right : 7
YYY ZZZ WWW XXX
1 2 3 4 5 6 7 8
Left : 7
Right : 2
Ada dua jenis Dequeue :
1. Input-Restricted-Deque
adalah deque yang operasi pemasukan elemen datanya hanya dapat
dilakukan di satu ujung kanannya (RIGHT), tetapi dapat menghapus
dari kedua ujungnya ( LEFT dan RIGHT).
2. Output-Restricted-Deque
adalah deque yang operasi pemasukan elemen datanya dapat
dilakukan melalui kedua ujungnya (LEFT dan RIGHT), tetapi hanya
dapat menghapus dari ujung kanannya(RIGHT).
Diketahui Circular Dequeue dengan 6 array memori :
Left : 2
Right : 4
dilakukan operasi berturut-turut :
1. F is added to the Right of the deque
2. 2 item on the Right are deleted
3. K, L, M are added to the Left
4. One item on the Left is deleted
5. R is added to the Left
6. S is added to the Right
7. T is added to the Right
Jawab :
1. , A , C , D , F ,
---2. ---, A , C ,
---,---,---3. K , A , C ,---, M , L
4. K , A , C ,---,---, L
5. K , A , C ,---, R , L
6. K , A , C , S , R , L