Anda di halaman 1dari 5

# t o{s

Queue
( Antrian )

A Queue is on ordered collection of items into


which new items moy be inserted of one
end (colled the rear.,of the gueue) ona
rrm rni.r,'it"iri'^ov be deleted at one end
(colled the front of the gu"u"j yedidyah L, MosheJ.
A,
##:T=lln:T#"#
Ada 3 macaln struktur eUEUE (Antrian)
yang menggunakan Array Satu Dimensiyang
akan dibahas:

I. LINEAR QUEUE
II. CIRCULAR QUEUE
ilr. DOUBLE ENDED QUEUE (DEOUE)

Misol n = lO
2 3 { 5 57 I
1. LINEAR QUEUE
(Antrian Lurus)-

F = Eront
R = Rear

2. ctRcuLAR euEuE
(Antrian Melingkar).

tr
Counter

3_ DOUBLE ENDED QUEUE


(Antrian Dengan Ujung Ganda). at I
Struktur Data 2 (Ngoritma dan Struktur Data 2) der8an C, C++ 4zo(s
3.1 Linear Queue (Antrian Lurus).
3.1.1. llustrasi Antrian Lurus.
M sal n=10=MaxSlze

n-1
9
F = Front (depan)
an R = Rear (Belakang)

Dari ilustrasi diatas, dapat dibaca :

Queue menggunakan iuray Ot0 ) sampai dengan e tn-1J dengan L0 elemen


( dimana: n = 10 ).
Sekarangisi queueterlihatada4 elemen, yaitu et3l,e t4l,e [5] , dan O t6l .

Ada dua indeks (bukanpointer) yang digunakanyaitu F dan R.


F (Front) : untukmenuniuk pengantri yangpalirrg depan (Front = Depan).
yaitu pengantriyang siap untuk keluar atau siap untuk dilayani
R (Rear) : untuk menunjuk pengantri yang paling belakang (Rear = Belakang)
yaitu pengantri yang terakhir nsuk

R = 6, artinya pengantriyang paling helakang ada di lokasi no 5, iadi pernah masuk 7


pengantri yang menempati 7 elemen dmgan umtan m""ri mulai otOl,
e[1], er2l, e[3] dan seterusnya sampai ot6r. ]adi yang terakhir masuk
sekarang berada di O t 6 I .

F = 3, artinya pengantri yang paling depan berada di tokasi no 3. atau sudah keluar
(atau sudah dilayani) sebanyak 3 n91e1qi dengan urutan keluar atau dilayani
mulai dari Qt0l, Q[1], dan Qt2l Jadi yar,[ teruk}rir keluar adalah yang
beradadiOt2l.

Dalam keadaan seperti yang diilustrasikan diatas, ada dua hal yang
dapat dilakukan, yaitu :
- Memasukkan/mengisi (INSERT) sebuah data baru ke dalam antriarl atau
- Mengambil/mengeluarkan/menghapus (DELETE) sebuah data dari dalam antriaru

Bila ada instruksi INSERT maka data baru akan disimpan


pointer R harus diarahkanmenunjuk ke etTl artinya
Q t6l ke e t'll kemufianbarumengisi OtTl deng;d

Bila ada instruksi DELETE, yang artinya mengambil sebuah elemen . Yang akan diambil adalah
isi et3r Karena T sldah menunjuk o t3r , maka langsung keriarkan isi e t3] yang
diterima oleh variabel X kemudian F maju satu langkah te-O t q t .
# za[-
t r/ Queu.e (Antrian)
3.1.2. Prinsip / Konsep proses : FtFo (Firsr rn Fir'r our)
Yang pertama masuk, pertama juga keluar.
atau
FIFS (nirct In Eirst Senre)
Yang pertama masuk, pertama juga dilapni
3.1.3. PrOSes. a. AWAL (Inisiafisasi)
b. INSERT (Sisip,llasuk, Simpan, Tulis)
c. DELETE ( Hapus, Keluar, Ambil atau Dilayani, Baca)
d. RESET (Kembali ke keadaan awal)

{S-itr". dasar untuk proses AWAL (tnisialisasi),


ditulis dalam bahasa C.

FrO,. Bila ditulis dalam void lllAl, ( ) F>Rberarti kosong


sebuah fungsi dapat
a=-1; ditulis sebagai berikut
{
F = 0,.
:
R=-L; lebih tepat :
) F = R+1, berarti kosong

Ilushasi hasil proses awal :

01234 Dalam keadaan ini, proses yang


atl bisa dilakukan hanyalah tNSERi
yaitu proses mengisi. Sedangkan
prcses DELETE atau mengambil
t isi Queue tak bisa dilakukan
R
karena isi Queue belum ada.

Pada saat ini :


Gatatan :
- Array e [J belum ada isinya
Proses lnisialisasi, lnsert, Delete,
(denganciri: F=R+1) dan Reset, ditulis dalam sebuah
- Variable X juga belum ada isinya tungsi.
- Variable F isinya = 0 Untuk memudahkan program
- Variable R isinya = -1 dibuat semua variabel bersifat
Global.

Algoritma dasar Algoritma dasar


untukproses INSERT Algoritma dasar
untuk proses DELETE untuk proses RESET
void INSERTQ void DELETEO void RESEIQ
{
{ {
R = R+1,. X = elFI; F=0;
QIRI = x; F = F * 1; R=-1;
) l )
R malu dulu satu langkah,
(R=R+i) Ambil dulu yang ditunJuk Kembali ke keadaan awal
oleh F, slmpan di X dlmaaaF=0,danR=-1.
Kemudlan isl datempat
yang dltunjuk oleh R, atau Kemudian F maju satu
Q[R]
langkah (F=F+l)
=1;
Struktur Data 2 (Algoritma d.an Struktur Data 2) d.engan
C, C++
-#4 {r
3.1.4 KondisiAntrian.

f : Y: ::T:::_:::r
c. R<n-l
ADA ISINYA d. F< R+l
PERLU DIRESET e. F=R+lond R=n-l
Beberapa llustrasl kondisi antrian.
n-1
0123 4 5 6 78
@ Kondisi awal -1 kondlsl AWAL
F = 0, R =
Antrian belum dlisl at1 F=R+1 antrian KOSONG
l R< n-1 antrian BISA DllSl
RI
@ Misal masuk I pengantri =Q belum ada yang dilayani
Belum ada yang dllayani at1 < R+1 antrian ADA tSlNyA
< n-1 antrian masih BISA Dllsl
=ft isi antrian ada satu
Mlsal masuk lagi 5
pengantri, dan betum at1 |F <= 9 Belum ada yang ditayani
ada yang dllayani R+1 antrian ADA lSlNyA
R < n-'t antrian masih BISA Dllsl

@ Mlsal dilayani S
arl F= 5 sudah dilayani 6 pengantr
pengantri F=R tinggal satu pengantri

o Misal sesudah itu dilayani


lagi 1 pengantri ail f=6
F = R+l
sudah dilayani 6 pengantr
antrian KOSONG
R < n-l antrian masih BISA Dllsl

@ Misal masuk lagi 3 F< R+, antrian ADA lSlNyA


pengantri R< n-1 antrian masih BISA Dllsl

(7) misat masuk tagi


pengantri
1
atl F< R+l antrian ADA lSlNyA
R= n-l antrian pENUH
Misal dilayani lagi 3 pengantri,
tingga! 1 pengantri yang
belum dilayani \Jl I F< R+1 antrian ADA tSlNyA
R= n-l antrian pENUH
Misal dilayani lagi 1 pengantri,
uemua tempat sudah dipakai
untuk pengantri. Semua
F=n semua pengantri
pengantri sudah dilayani. Antrian
at I sudah dilayani
F=R+1 antrian KOSONG
perlu di RESET
R=n-l antrian'PENUH,
F= R+l dan R= n-i kondisiini = kondlsi khusus, antrian disobut KOSON
lil?#*#fi:f*Uli: ;.=:lj1;:,,,"1-X5"Jji"'"i:#:i:iffi-*-:H;X?.f"ffi3'i*fff#"flEsE$ H',lX
Kondisi khusus yang lain. Tempat^- . F = 0 belum ada yang
antrian sudah penuh, tapi qt x x x x x x x x x x
.l dilayani
pengantri belum ada yang dilayani sudah dilayani
F R R = n-1 antrian 'pENUH,
1.5. Algoritma INSERT dan DELETE yang lengkap.
ir45
Algoritma yang lengkap untuk Algoritma yang lengkap untuk proses
proses INSERT lNSERTdengan'logika terbalik'

void INSERT(woid) Apakah


i"ii.I.iY,ll,
t
1.--' f,ffi,,., ( if ( R == n-l ) o...-> pENUH
printf (*Antrlan Penulr' ) ,.
O""""> lNsERr
E'i'*=**i' e.l.se
) {R = R+1;}-'-"'>
else QIRI = X;
printf( "Antrian Fenuh") ; )
)
l
Algoritma yang lengkap untuk Algoritma yang lengkap untuk proses
proses DELETE DELETE dengan 'logika terbalik'
void DELETEo void DELETE(void)
{ if ( F < R+1- ).-.., lPa-k?l
ADAISI {if(E:R+l)
{x=e[F] printf ("Antrian Kosong, ) ;
F = F + 1; }""'> DELETE else
if(F==n) { X = Q[RI;
( E = O; o..> Bila yang E = P .t 1;
R = -1; dideleteadalah if(F==n)
isi antrian yang
) { E = 0,'
terakhir maka
) perlu di RESET R = -1 ;
e]-se l
printf ( *Antrian Kosong");
)
)

Anda mungkin juga menyukai