Anda di halaman 1dari 4

PROGRAM QUEUE1 ItemType x;

Program kali ini membahas konsep dari Queue, Queue Membuat variabel x
atau antrian adalah sebuah konsep yang memiliki sifat dengan tipe data
FIFO(First In First Out). Sama seperti namanya ItemType.
antrian dimana data yang pertama masuklah yang akan
di keluarkan pertamakali. Pada program kali ini Queue a;
memanfaatkan penggunaan Struct dan juga Array.
F C R I Membuat variabel a
NULL NULL NULL NULL dengan tipe data Queue.
Struct : Dimana tipe data
#define MAXQUEUE 100 tersebut berisikan 4
typedef struct { a jenis variabel, yaitu
int Count; Front, Rear, Count, dan
int Front; juga Item
int Rear;
ItemType Item[MAXQUEUE];
}Queue;
InitializeQueue(&a);
Pada mekanismenya nya akan di gambarkan sebagai Melakukan pemanggilan
fungsi InitializeQueue
F C R I dengan parameter queue
I a
int int int int 0
N
Q->Count = 0;
D
Nama_Queue int 1 Mengisikan Count pada a
E dengan 0
K
int 100
S F C R I Q->Front = 0;
Mengisikan Front pada a
0 0 0 NULL dengan 0
Keterangan :
F = Front Q->Rear = 0;
C = Count a Mengisikan Rear pada a
R = Rear dengan 0
I = Item[MAXQUEUE]

Mekanisme :
ItemType x;
Queue a; Insert(10, &a);
InitializeQueue(&a); Memanggil fungsi Insert
Insert(10, &a); dengan parameter Queue
Insert(20, &a); a dan data yang akan
Insert(30, &a); dimasukan yaitu 10

Fungsi : if (a->Count ==
======================================================================= F C R I MAXQUEUE)
void InitializeQueue(Queue *Q) { 0 0 0 NULL Karna count pada a
Q->Count = 0; tidak sama dengan
Q->Front = 0; MAXQUEUE yaitu 100,
Q->Rear = 0; a maka akan menjalankan
} else
Deskripsi :
Fungsi yang di gunakan untuk menginisialisasikan Else
dengan menetapkan nilai awal pada count, front, dan a->Item[a->Rear] = 10
rear dengan 0.
F C R I
Rear pada a sekarang
======================================================================= 0 0 0 10 0 bernilai 0.
void Insert(ItemType ins, Queue *Q) { Item a pada indeks ke
if (Q->Count == MAXQUEUE) { Rear kita isikan dengan
printf("Tidak dapat memasukan data! a 10. atau dapat
Queue Penuh!"); dituliskan
} a->Item[0]=10.
else {
Q->Item[Q->Rear] = ins; a->Rear = (a->Rear + 1)
Q->Rear = (Q->Rear + 1) % MAXQUEUE; F C R I
% MAXQUEUE
++(Q->Count); 0 0 1 10 0 Dapat dituliskan dengan
} a->Rear = (0 + 1) % 100
} = 1 % 100
Deskripsi : a = 1
Fungsi yang akan kita gunakan untuk memasukan data Rear pada a bernilai 1
pada queue kita dengan 2 parameter yaitu queue yang
dituju dan juga data yang akan dimasukan. Terdapat ++(a->Count)
sebuah kondisi yaitu adalah pengecekan count pada Q,
F C R I Dilakukan Increment
jika count tersebut = MAXQUEUE, maka data tidak akan 0 1 1 10 0 pada count. Maka
dapat dimasukan. Jika tidak maka akan menjalankan sekarang count bernilai
perintah yang berada di dalam else. 1.
a
Insert(20, &a); F C R I ++(a->Count)
Memanggil fungsi Insert Dilakukan Increment
dengan parameter Queue
0 3 3 10 0 pada count. Maka
a dan data yang akan sekarang count bernilai
dimasukan yaitu 20 a 20 1 3.

if (a->Count == 30 2
F C R I MAXQUEUE)
0 1 1 10 0 Karna count pada a
tidak sama dengan
MAXQUEUE yaitu 100,
a maka akan menjalankan
else

Else
F C R I a->Item[a->Rear] = 20
Rear pada a sekarang
0 1 1 10 0 bernilai 1.
Item a pada indeks ke
a 20 1 Rear kita isikan dengan
20. atau dapat
dituliskan
a->Item[1]=20.

F C R I a->Rear = (a->Rear + 1)
% MAXQUEUE
0 1 2 10 0 Dapat dituliskan dengan
a->Rear = (1 + 1) % 100
20 1 = 2 % 100
a = 2
Rear pada a bernilai 2

F C R I ++(a->Count)
Dilakukan Increment
0 2 2 10 0 pada count. Maka
sekarang count bernilai
20 1 2.
a

Insert(30, &a);
Memanggil fungsi Insert
dengan parameter Queue
a dan data yang akan
dimasukan yaitu 30

F C R I if (a->Count ==
MAXQUEUE)
0 2 2 10 0 Karna count pada a
tidak sama dengan
a 20 1 MAXQUEUE yaitu 100,
maka akan menjalankan
else

Else
F C R I a->Item[a->Rear] = 30
0 2 2 10 0 Rear pada a sekarang
bernilai 2.
Item a pada indeks ke
a 20 1 Rear kita isikan dengan
20. atau dapat
30 2 dituliskan
a->Item[2]=30.

a->Rear = (a->Rear + 1)
F C R I % MAXQUEUE
0 2 3 10 0 Dapat dituliskan dengan
a->Rear = (2 + 1) % 100
= 3 % 100
a 20 1 = 3
Rear pada a bernilai 3
30 2
Mekanisme : F C R I
display(&a);
Remove(&a, &x);
0 3 3 10 0
display(&a);
a 20 1
Fungsi :
=======================================================================
void display(Queue *p) {
30 2
int i;
if (p->Count == 0) { display(&a);
cout << "QUEUE IS EMPTY"; Memanggil fungsi
} Display dengan
else { parameter Queue a yang
cout << "\nQUEUE IS \n"; telah kita buat
for (i = p->Front; i <= p->Rear-1; i++) sebelumnya
{
cout << p->Item[i] << " "; if (a->Count == 0)
} Pada awal fungsi akan
} dilakukan seleksi
} kondisi pada variabel
Deskripsi : Count, jika Count = 0
Fungsi yang akan digunakan untuk mencetak Queue yang maka Queue sudah
sudah kita buat, dengan cara menampilkan item dengan kosong.
indeks dimulai dari Front dan berakhir pada Rear
sesuai dengan konsep LIFO. F C R I Else
======================================================================= Karna Count tidak sama
void Remove(Queue *Q, ItemType *rm) {
0 3 3 10 0 dengan 0 maka akan
if (Q->Count == 0) { menjalankan perintah di
printf("Tidak dapat mengambil data! a 20 1 dalam else.
Queue Kosong!");
} 30 2
else {
*rm = Q->Item[Q->Front];
Q->Front = (Q->Front + 1) % MAXQUEUE;
for (i = a->Front; i <=
--(Q->Count); F C R I a->Rear-1; i++)
} 0 3 3 10 0 Atau dapat dituliskan:
for (i = 0; i <= (3-1);
}
i++)
Deskripsi : a 20 1 Perulangan dengan for
Fungsi yang akan kita panggil untuk menghapus secara
yang akan diulangan
konsep data pada Queue kita. Menghapus secara konsep 30 2 dengan i = 0, 1, 2.
dimaksud dengan tidak benar benar menghapus data yang
ada pada Queue namun memindahkan Front pada data
setelahnya.
cout << a->Item[i];
Menampilkan item pada a
dengan indeks sesuai
dengan i.

F C R I
Saat i = 0
0 3 3 10 0 cout << a->Item[0];
Menampilkan 10
a 20 1
30 2

F C R I
Saat i = 1
0 3 3 10 0 cout << a->Item[1];
Menampilkan 20
a 20 1
30 2

F C R I
Saat i = 2
0 3 3 10 0 cout << a->Item[2];
Menampilkan 30
a 20 1
30 2
Remove(&a, &x); if (a->Count == 0)
Memanggil fungsi untuk Pada awal fungsi akan
menghapus data secara dilakukan seleksi
konsep dari Queue yang kondisi pada variabel
sudah kita buat tadi. Count, jika Count = 0
maka Queue sudah
kosong.
if (Q->Count == 0)
Saat di awal fungsi
akan dilakukan F C R I Else
pengecekan variabel Karna Count tidak sama
Count, jika samadengan
1 3 3 10 0 dengan 0 maka akan
0 maka data pada Queue menjalankan perintah di
sudah habis dan tidak a 20 1 dalam else.
dapat dihapus lagi.
Jika tidak maka akan 30 2
menjalankan else

F C R I for (i = a->Front; i <=


F C R I Else a->Rear-1; i++)
Karna Count tidak 1 3 3 10 0 Atau dapat dituliskan:
0 3 3 10 0 samadengan 0 maka akan for (i = 1; i <= (3-1);
menjalankan perintah a 20 1 i++)
a 20 1 yang berada di dalam Perulangan dengan for
else yang akan diulangan
30 2 dengan i = 1, 2.
30 2

*x = a->Item[a->Front]; cout << a->Item[i];


F C R I Menampilkan item pada a
= a->Item[0];
0 3 3 10 0 = 10 dengan indeks sesuai
Mengisikan *x dengan dengan i.

a 20 1 Item pada a dengan


F C R I
x indeks Front, Front
Saat i = 1
30 2
bernilai 0. 1 3 3 10 0 cout << a->Item[1];
Menampilkan 20
a 20 1
10 0
30 2
a->Front = (a->Front +
F C R I 1) % MAXQUEUE
1 3 3 10 0 Atau dapat dituliskan:
a->Front = (0+ 1) % 100 F C R I
= 1 Saat i = 2
a 20 1 Maka Front sekarang 1 3 3 10 0 cout << a->Item[2];
x bernilai 1 Menampilkan 30
30 2 a 20 1

10 0 30 2

F C R I --(a->Count);
Melakukan Decrement
1 2 3 10 0 pada Count

a 20 1
x
30 2

10 0

F C R I display(&a);
Memanggil fungsi
1 2 3 10 0 Display dengan
parameter Queue a
a 20 1
30 2

Anda mungkin juga menyukai