A. TUJUAN PEMBELAJARAN
B. URAIAN MATERI
Circular Queue adalah struktur data linier di mana operasi dilakukan berdasarkan
prinsip FIFO (First In First Out) dan posisi terakhir terhubung kembali ke posisi pertama
untuk membuat lingkaran. Hal ini juga disebut 'Ring Buffer'
Dalam Queue normal, kita dapat memasukkan elemen sampai antrian menjadi
penuh. Tapi begitu antrian menjadi penuh, kita tidak dapat memasukkan elemen berikutnya
bahkan jika ada ruang di depan antrian.
Gambar 7.2 Proses Queue
atau
Definisi
void INSERT(void)
{
R = (R + 1) % n;
Q[R] = x;
COUNTER++;
}
a. Kondisi awal
1) F = 0, R = -1, COUNTER = 0 kondisi awal
2) COUNTER = 0 Antrian kosong
Kondisi antrian:
No Kondisi Ciri
antrian
a Kosong COUNTER = 0
b Penuh COUNTER = n
void INSERT(void)
{
if(COUNTER < n)
{
R = (R + 1) % n;
Q[R] = x;
COUNTER++;
}
else cout<<”Antrian penuh”;
}
void DELETE(void)
{
if(COUNTER > 0)
{ x = Q[F]; F = (F + 1)
%n;
COUNTER--;
}
else cout<<”Antrian kosong”;
}
public:
CirQueue();
int isFull();
int isEmpty();
void insertQueue(int item);
int deleteQueue(int *item);
};
Listing Program untuk implementasi Circular Queue untuk semua operasi antrian di
atas
#include <iostream>
public:
CirQueue();
int isFull();
int isEmpty();
void insertQueue(int item);
int deleteQueue(int *item);
};
return full;
}
if( count == 0 )
empty = 1;
return empty;
}
ele[rear] = item;
count++;
int main()
{
int item;
CirQueue q = CirQueue();
q.insertQueue(10);
q.insertQueue(20);
q.insertQueue(30);
q.insertQueue(40);
q.insertQueue(50);
q.insertQueue(60);
if( q.deleteQueue(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
if( q.deleteQueue(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
if( q.deleteQueue(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item << endl;
}
if( q.deleteQueue(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
if( q.deleteQueue(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
q.insertQueue(60);
if( q.deleteQueue(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
if( q.deleteQueue(&item) == 0 )
{
cout<<"\nItem dihapus:"<< item<< endl;
}
cout<<"\n";
return 0;
}
Hasil output dari program diatas
dimasukkan item : 10
dimasukkan item : 20
dimasukkan item : 30
dimasukkan item : 40
dimasukkan item : 50
Queue Overflow Item
dihapus:10
Item dihapus:20
Item dihapus:30
Item dihapus:40
Item dihapus:50
dimasukkan item : 60
Item dihapus:60
Queue Underflow
C. SOAL LATIHAN/TUGAS
Drozdek, A. (2012). Data Structures and Algorithms in C++, Fourth Edition. United
States: Changeage Learning.
Goodrich, M. T., Tamassia, R., & Mount, D. M. (2011). Data Structures and
Algorithms in C++, Second Edition. United States: John Wiley & Sons, Inc.
Jain, H. (2016). Problem Solving in Data Structures & Algorithms Using C++
First Edition. CreateSpace Independent Publishing Platform.
Karumanchi, N. (2017). Data Structures And Algorithms Made Easy. Bombay:
CareerMonk Publications.
Weiss, M. A. (2014). Data structures and algorithm analysis in C++, Fourth Edition.
Florida: Addison Wesley.