Queue /
Antrian adalah suatu
kumpulan data yang mana penambahan elemen hanya bisa dilakukan pada satu ujung
(disebut dengan sisi belakang atau rear) dan penghapusan (pengambilan
elemen dilakukan lewat ujung lain
(disebut dengan sisi depan atau front).
Queue bersifat
FIFO (First In First Out) artinya Benda yang pertama masuk ke dalam
queue akan menjadi yang pertama keluar dari queue.
Notasi Pada Queue :
• FRONT (Q) = Menunjukkan
posisi terdepan dari suatu antrian Q.
• REAR (Q) = Menunjukkan
posisi terakhir dari suatu antrian Q.
• NOEL (Q) = Menunjukkan
jumlah elemen di dalam Antrean Q.
Operasi Pada Queue :
• Create (Q) =
Berguna untuk membuat sebuah queue/antrian kosong.
• Isempty (Q) = Berguna
untuk mengecek sebuah nilai pada queue. Nilai akan bernilai True jika queue tidak
terdapat sebuah elemen di dalamnya, sedangkan nilai akan bernilai False jika queue
terdapat elemen di dalamnya.
• Insert (Element,Q) = Berguna untuk
menyisipkan atau memasukkan sebuah elemen ke dalam queue, dimana menyisipkan
melalui paling belakang (rear).
• Remove (Q) =
Berguna untuk menghapus sebuah elemen yang terdapat paling depan (front) pada
sebuah queue.
Jenis – Jenis Antrian :
A. Deque
Adalah antrian dimana elemennya bisa masuk dan
keluar lewat kedua ujungnya (berbeda dengan queue yang hanya bisa masuk lewat
ujung belakang dan keluar lewat ujung depan).
Struktur Umum Deque :
Deque mempunyai 2 jenis variasi, yaitu :
• Deque input terbatas = suatu
deque yang membatasi pemasukkan elemen hanya pada satu ujung dari list,
sementara penghapusan elemen boleh dilakukan pada kedua ujung list.
• Deque output
terbatas = suatu deque yang membatasi penghapusan elemen hanya pada satu ujung
dari list, sementara pemasukkan elemen boleh dilakukan pada kedua ujung list.
B. Antrian
Berprioritas
Adalah suatu
queue yang setiap elemennya telah diberikan sebuah prioritas, dan urutan proses
penghapusan elemen adalah berdasarkan aturan berikut :
• Elemen yang
prioritasnya lebih tinggi, diproses lebih dahulu dibandingkan dengan elemen
yang prioritas lebih rendah.
• Dua elemen
dengan prioritas yang sama, diproses sesuai dengan urutan mereka sewaktu
dimasukkan ke dalam priority queue.
Program Queue pada bahasa C.
# include <stdio.h>
# define MAX 5
int queue_arr[MAX];
int rear = -1;
int front = -1;
main() {
int choice;
clrscr();
while(1)
{
printf("\n\n");
printf("+===================+ \n");
printf("| Menu Utama | \n");
printf("+===================+ \n");
printf("| 1. Insert Queue | \n");
printf("| 2. Delete Queue | \n");
printf("| 3. Display Queue | \n");
printf("| 4. Quit | \n");
printf("+===================+ \n");
printf("Masukkan Pilihan : ");
scanf("%d",&choice);
printf("\n\n");
switch(choice)
{
case 3 :
clrscr();
display();
break;
case 2 :
clrscr();
del();
break;
case 1:
clrscr();
insert();
break;
case 4:
clrscr();
exit(1);
default:
printf("Salah Memasukkan Pilihan tuh . . ! \n");
}/*akhir dari switch*/
}/*akhir dari while*/
}/*akhir dari main()*/
del()
{
if (front == -1 || front > rear)
{
printf("Queue Underflow\n");
return ;
}
else
{
printf("Element deleted from queue is : %d\n", queue_arr[front]);
front=front+1;
}
}/*akhir dari fungsi del()*/
insert()
{
int added_item;
if (rear==MAX-1)
printf("Queue Overflow !! \n");
else
{
if (front==-1) /*jika queue kosong */
front=0;
printf("Masukkan Elemen Kedalam Queue : ");
scanf("%d", &added_item);
rear=rear+1;
queue_arr[rear] = added_item ;
}
}/*akhir dari fungsi insert() */
display()
{
int i;
if (front == -1)
printf("Queue Kosong !\n");
else
{
printf("Queue :\n");
for(i=front;i<= rear;i++)
printf("%d ",queue_arr[i]);
printf("\n");
}
}/*akhir dari fungsi display() */
# define MAX 5
int queue_arr[MAX];
int rear = -1;
int front = -1;
main() {
int choice;
clrscr();
while(1)
{
printf("\n\n");
printf("+===================+ \n");
printf("| Menu Utama | \n");
printf("+===================+ \n");
printf("| 1. Insert Queue | \n");
printf("| 2. Delete Queue | \n");
printf("| 3. Display Queue | \n");
printf("| 4. Quit | \n");
printf("+===================+ \n");
printf("Masukkan Pilihan : ");
scanf("%d",&choice);
printf("\n\n");
switch(choice)
{
case 3 :
clrscr();
display();
break;
case 2 :
clrscr();
del();
break;
case 1:
clrscr();
insert();
break;
case 4:
clrscr();
exit(1);
default:
printf("Salah Memasukkan Pilihan tuh . . ! \n");
}/*akhir dari switch*/
}/*akhir dari while*/
}/*akhir dari main()*/
del()
{
if (front == -1 || front > rear)
{
printf("Queue Underflow\n");
return ;
}
else
{
printf("Element deleted from queue is : %d\n", queue_arr[front]);
front=front+1;
}
}/*akhir dari fungsi del()*/
insert()
{
int added_item;
if (rear==MAX-1)
printf("Queue Overflow !! \n");
else
{
if (front==-1) /*jika queue kosong */
front=0;
printf("Masukkan Elemen Kedalam Queue : ");
scanf("%d", &added_item);
rear=rear+1;
queue_arr[rear] = added_item ;
}
}/*akhir dari fungsi insert() */
display()
{
int i;
if (front == -1)
printf("Queue Kosong !\n");
else
{
printf("Queue :\n");
for(i=front;i<= rear;i++)
printf("%d ",queue_arr[i]);
printf("\n");
}
}/*akhir dari fungsi display() */
Sumber : Struktur data pert5
Tidak ada komentar:
Posting Komentar