Circular Queue
Struktur Data - Pertemuan 7
"Circular Queue"
Circular Queue atau bisa disebut juga circular melingkar, adalah salah satu jenis queue dengan karakteristik model antrian yang kedua ujungnya terhubung. Yaitu, setelah data terakhir adalah data paling awal. Dan sebaliknya, sebelum data paling awal data yang paling belakang
Prinsip Circular Queue adalah FIFO (First In First Out), maksudnya, elemen pertama yang masuk akan keluar pertama juga
Di Circular Queue, F tidak selalu <= R
Setelah R dan F sampai ke n-1, maka tidak direset tetapi melingkar ke 0.
Circular Queue menggunakan fungsi Counter. Counter merupakan jumlah pengantri yang ada dalam antrian.
- Pada proses awal, counter = 0
- Pada proses insert, counter++
- Pada proses delete, counter--
Proses Circular Queue :
- AWAL (Inisialisasi)
- INSERT (Sisip, Masuk, Simpan, Tulis)
- DELETE (Hapus, Keluar, Ambil, Dilayani)
Kondisi Antrian :
Soal
Buatlah suatu program Animasi Antrian Melingkar dengan 4 buah pilihan : INSERT, DELETE, CETAK ANTRIAN, QUIT.
- Jika dipilih INSERT : program akan meminta user untuk menginput sebuah karakter yang akan dimasukan kedalam antrian
- Jika dipilih DELETE : maka karakter pertama masuk akan dikeluarkan dari antrian
- Jika dipilih CETAK ANTRIAN : komputer menampilkan karakter yang ada pada antrian
- Jika dipilih QUIT : program keluar
Program :
#include<stdio.h>
#include<conio.h>
#include<stdlib.h>
using namespace std;
int main() {
int queue[10], i, head=-1, tail=-1, enqueue, pil, urut=0, tmp;
do {
system("pause");
system("cls");
printf("1. INSERT");
printf("2. DELETE");
printf("3. CETAK ANTRIAN");
printf("4. QUIT");
printf("Silahkan masukkan pilihan anda : ");
scanf("%d", &pil);
printf("");
if(pil==1) {if(tail==9) {printf("Antrian Penuh");}
else if(tail==-1) {head++;tail++;
printf("Masukkan nilai : ");
scanf("%d", &enqueue);
queue[tail]=enqueue;
urut++;
printf("Nomor urut : %d", urut);}
else {tail++;
printf("Masukkan nilai : ");
scanf("%d", &enqueue);
queue[tail]=enqueue;
urut++;
printf("Nomor urut : %d", urut);
printf("Anda harus menunggu %d antrian lagi", tail);}}
else if(pil==2) {if(tail==-1) {printf("Antrian kosong");}
else {printf("Data dengan nilai %d sudah dilayani", queue[head]);
tmp=queue[head];
for(i=head;i<=tail;i++) {queue[i]=queue[i+1];}
queue[tail]=tmp;
urut++;
printf("Data dengan nilai %d masuk antrian", queue[tail], urut);
if(tail==0) {printf("Yang bersangkutan langsung dilayani");}
else {printf("Yang bersangkutan harus menunggu %d antrian lagi", tail);}}}
else if(pil==3) {if(tail==-1) {printf("Antrian kosong");}
else {for(i=head;i<=tail;i++) {printf("Antrian ke-%d : %d", i+1, queue[i]);}
printf("");}}
else if(pil==4) {printf("Anda telah selesai menggunakan program Queue Circular");}
else {printf("Pilihan yang anda masukkan tidak valid");}
} while(pil!=4);
getch();
}
Komentar
Posting Komentar