OPERASIONAL QUEUE IN LINEAR ARRAY


/*---- OPERASIONAL QUEUE IN LINEAR ARRAY ----*/
#include
#include
#define MAX 50

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

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

int Full() { //Proses yang menyatakan antrian Penuh
if (Que.Akhir == MAX) { //Jika akhir mencapai MAX
return 1; //Status menjadi 1
} else { //Selainnya
return 0; //Status menjadi 0
}
}

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

void InQueue(char eData) { //Tambah antrian
if (Empty() == 1) { //Cek jika antrian kosong
Que.Awal = 1; //Set awal = 1
Que.Akhir = 1; //Set akhir = 1
Que.Data[Que.Awal] = eData; //Isi data pertama dengan eData
} else { //Selaiinya
if (Full() != 1) { //Cek jika antrian belum penuh
Que.Akhir++; //Nilai akhir dijumlahkan
Que.Data[Que.Akhir] = eData; //Isi data berikutnya dengan eData
} else { //Jika antrian sudah penuh
printf("Antrian Sudah Penuh...\n"); //Tampilkan pesan
}
}
}

char DeQueue() { //Hapus Antrian
char rData; //Data ditampung
int i; //Index

if (Empty() != 1) { //Cek jika antrian belum kosong
rData = Que.Data[Que.Awal]; //Tampung data yang akan dihapus
for (i = Que.Awal; i <= Que.Akhir - 1; i++) {
Que.Data[i] = Que.Data[i + 1]; //Posisi antrian digeser kedepan
}
Que.Akhir--; //Akhir dikurang 1
return rData; //Kembalikan rData
} else { //Jika antrian sudah kosong
printf("Antrian Sudah Kosong...\n"); //Tampilkan pesan
}
getch(); //Tahan Tampilan
}

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

printf("Isi Antrian Sekarang : "); //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 --*/

1 komentar:

xxx on 22 Juli 2009 pukul 12.25 mengatakan...

???
Add agains

Posting Komentar

 

kantinbesment ♣ ♣ ♣ KamusIlmu