OPERASIONAL QUEUE IN CIRCULAR ARRAY


/*---- OPERASIONAL QUEUE IN CIRCULAR ARRAY ----*/
#include
#include
#define MAX 5

struct Queue { //Definisikan Struct untuk antrian
int Awal;
int Akhir;
char Data[MAX];
} Que;

void Init() { //Init Proses Pengosongan Antrian
Que.Awal = 1; //Set awal menjadi 1
Que.Akhir = MAX; //Set akhir menjadi MAX
}

int Full() { //Proses yang menyatakan antrian Penuh
//Jika Hasil rumus sama dengan awal
if ((((Que.Akhir % MAX) + 1) % MAX) + 1 == Que.Awal) {
return 1; //Status menjadi 1
} else { //Selainnya
return 0; //Status menjadi 0
}
}

int Empty() { //Proses yang menyatakan antrian Kosong
if ((Que.Akhir % MAX) + 1 == Que.Awal) { //Jika akhir sudah bernilai 0
return 1; //Status menjadi 1
} else { //Selainnya
return 0; //Status menjadi 0
}
}

void InQueue(char eData) { //Proses Tambah Data
if (Full() != 1) { //Jika antrian belum penuh
Que.Akhir = (Que.Akhir % MAX) + 1; //Hitung posisi belakang
Que.Data[Que.Akhir] = eData; //Tambahkan data antrian
} else { //Jika antrian sudah penuh
printf("Antrian Sudah Penuh...\n"); //Tampilkan pesan
getch(); //Tahan tampilan
}
}

char DeQueue() { //Proses Hapus Antrian
char rData; //Data tampungan

if (Empty() != 1) { //Cek jika antrian belum kosong
rData = Que.Data[Que.Awal]; //Tampung data yang akan dihapus
Que.Awal = (Que.Awal % MAX) + 1; //Ubah nilai awal agar tidak tergeser
return rData; //Kembalikan rData
} else { //Jika antrian sudah kosong
printf("Antrian Sudah Kosong...\n"); //Tampilkan pesan
}
getch(); //Tahan Tampilan
}

void Read() { //Proses Baca antrian
int i; //Index

i = Que.Awal; //set i = awal
printf("Isi Antrian : "); //Pesan
for (i = Que.Awal; i <= Que.Akhir; i++) {
printf("%c ", Que.Data[i]); //Tampilkan data antrian
}
printf("\n");
getch(); //Tahan Tampilan
}

void main() {
char Pilih, Elm;

printf("Aplikasi Queue dalam Linear Array\n\n");
Init(); //Proses Init

//Aplikasi Dimulai
do {
clrscr(); //Bersihkan Layar
printf("Menu Pilihan...\n"); //Menu Utama
printf("1. Tambah Data\n");
printf("2. Hapus Data\n");
printf("3. Baca Data\n");
printf("4. Kosongkan Antrian\n");
printf("5. Keluar\n");
printf("Masukan Pilihan : ");
scanf("%s", &Pilih); //Pilihan diterima

clrscr(); //Bersihkan layar
switch (Pilih) { //Seleksi Pilihan
case '1': //Tambah antrian
printf("Entri Antrian : "); //Masukan Data
scanf("%s", &Elm);
InQueue(Elm); //Proses InQueue()
break;
case '2': //Hapus Antrian
Elm = DeQueue(); //Proses DeQueue()
printf("Antrian Keluar : %c\n", Elm); //Pesan
getch(); //Tahan Tampilan
break;
case '3': //Baca data antrian
Read(); //Proses Read()
break;
case '4': //Hapus semua antrian
Init(); //Panggil kembali Init()
printf("Antrian Sudah Dikosongkan\n");
getch(); //Tahan Tampilan
break;
case '5': //Keluar dari aplikasi
printf("Bye..!\n"); //Pesan
break;
default : //Pilihan salah
printf("Ulangi Pilihan...\n"); //Pesan
break;
}
} while(Pilih != '5'); //Perulangan selesai ketika pilihan = 5
getch(); //Tahan tampilan
}
/*-- AUTHOR BY PYXIS_AMIKOM --*/

0 komentar:

Posting Komentar

 

kantinbesment ♣ ♣ ♣ KamusIlmu