Queue
NIM/Nama : 3312001006/Daffa Dhiya Ulhaq
Setelah mengikuti praktikum ini, mahasiswa diharapkan dapat:
Menggambarkan konsep queue pada memory
Membuat struktur data queue dalam bahasa C
Melakukan operasi pada queue
Mengaplikasikan queue pada program
1. Buatlah deklarasi queue dalam bahasa C yang bisa menyimpan nama pasien ke dalam
antrian! Salin dan jelaskan kode program di sini.
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#define MAX 5
Queue Q;
//membuat antrian
void create(Queue *Q){
(*Q).count= 0;
(*Q).front= 0;
(*Q).rear= -1;
}
~1~
}
else{
(*Q).rear=((*Q).rear+1) %MAX;
(*Q).data[(*Q).rear]= malloc(strlen(nama)+1);
strcpy((*Q).data[(*Q).rear],nama);
(*Q).count++;
}
}
//mengurangi antrian
void dequeue(Queue*Q){
if(isEmpty(*Q)){
printf("Queue kosong, dequeue gagal");
}
else {
free((*Q).data[(*Q).front]);
(*Q).front=((*Q).front+1) %MAX;
(*Q).count--;
}
}
Queue Q;
void create(Queue *Q){
(*Q).count= 0;
(*Q).front= 0;
(*Q).rear= -1;
~2~
}
int main(){
create(&Q);
printf("Antrian Pasien:\n");
enqueue(&Q, "Dimas");
enqueue(&Q, "Agung");
enqueue(&Q, "Fayzal");
dequeue(&Q);
enqueue(&Q,"Ibnu");
Tampil(Q);
}
2. Dengan definisi fungsi dan prosedur yang telah Anda miliki sampai nomor 2 di atas,
buatlah program yang dapat mengelola antrian pasien di suatu klinik praktek dokter.
~3~
Ditentukan batas maksimal antrian pada satu hari adalah 30 pasien saja. Program
dapat menampilkan menu seperti contoh berikut.
PROGRAM ANTRIAN PASIEN
[1] Tambah Pasien
[2] Panggil Pasien
[3] Tampil Daftar Antrian
[4] Keluar
Salin dan jelaskan kode program Anda di sini.
#include<stdio.h>
#include<string.h>
#include <stdlib.h>
#define MAX 30
Queue Q;
//membuat antrian
void create(Queue *Q){
(*Q).count = 0;
(*Q).front = 0;
(*Q).rear = -1;
}
//mengecek jika kosong
int isEmpty(Queue Q){
return (Q.count == 0);
}
//mengecek jika penuh
int isFull(Queue Q){
return (Q.count == MAX);
}
//menambah antrian
void enqueue(Queue *Q, string *nama){
if (isFull(*Q)){
printf("Queue Overflow, Enqueue Fail!");
}
else{
(*Q).rear = ((*Q).rear + 1) % MAX;
(*Q).data[(*Q).rear] = malloc(strlen(nama) + 1);
strcpy((*Q).data[(*Q).rear], nama);
(*Q).count++;
}
}
//mengurangi antrian
void dequeue(Queue *Q){
~4~
if (isEmpty(*Q)){
printf("Queue Underflow, Dequeue gagal!");
}
else {
free((*Q).data[(*Q).front]);
(*Q).front = ((*Q).front + 1) % MAX;
(*Q).count--;
}
}
int main(){
create(&Q);
int input;
char data[50];
printf("MENU QUEUE\n");
printf("[1]Tambah Pasien\n");
printf("[2]Panggil Pasien\n");
printf("[3]Tampil Daftar Antrian\n");
printf("[4]Keluar\n");
do{
printf("\nPilih : "); scanf("%d", &input);
if(input == 1){
printf("Masukkan nama : "), scanf("%s", &data);
enqueue(&Q, data);
}else if(input == 2){
dequeue(&Q);
}else if(input == 3){
Tampil(Q);
}else if(input == 4){
goto end;
}else{
printf("Salah input");
}
}while(input != 5);
end:
return 0;
}
Tampilkan hasil running program dan penjelasannya di sini.
~5~
Pertama program akan menampilkan menu, lalu apabila ada pasien datang pilih menu
No. 1,kemudian apabila ada yang datang lagi pilih No. 1 lagi, dan apabila dokter ingin
memanggil pasien maka pilih No. 2.
Kesimpulan
Setelah mengikuti praktikum ini, apa saja yang telah Anda pelajari?
Saya dapat Menggambarkan konsep queue pada memory, Melakukan operasi pada queue
~6~