Anda di halaman 1dari 4

Praktikum 6

Queue
NIM/Nama : 4312011026 / Ikhwan Ash Shafa Arrafi
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

typedef char pasien;


typedef struct {
pasien *data[MAX];
int count;
int front;
int rear;
}Queue;

Queue Q;
void create(Queue *Q){
(*Q).count= 0;
(*Q).front= 0;
(*Q).rear= -1;
}

int isEmpty(Queue Q){


return(Q.count==0);
}

int isFull(Queue Q){


return(Q.count==MAX);
}

void enqueue(Queue*Q, pasien*nama){


if(isFull(*Q)){
printf("Antrian Sudah Penuh, enqueue gagal");
}

~1~
else{
(*Q).rear=((*Q).rear+1) %MAX;
(*Q).data[(*Q).rear]= malloc(strlen(nama)+1);
strcpy((*Q).data[(*Q).rear],nama);
(*Q).count++;
}
}

void dequeue(Queue*Q){
if(isEmpty(*Q)){
printf("Antrian kosong, dequeue gagal");
}
else {
free((*Q).data[(*Q).front]);
(*Q).front=((*Q).front+1) %MAX;
(*Q).count--;
}
}

void Tampil(Queue Q){


int i;
for (i=0;i<Q.count;i++){
printf("Antrian ke[%d]=%s\n",i,Q.data[(Q.front+i)%MAX]);
}
}

int main(){
create(&Q);
printf("Antrian Pasien:\n");
enqueue(&Q, "Pasien B");
enqueue(&Q, "Pasien C");
enqueue(&Q, "Pasien D");
dequeue(&Q);
enqueue(&Q, "Pasien E");
Tampil(Q);
}
Perubahan di prosedur mana saja yang berkaitan dengan perubahan data dalam deklarasi
queue? Jelaskan.
Pada Prosedur enqueue dan dequeue

void enqueue(Queue*Q, pasien*nama){


if(isFull(*Q)){
printf("Antrian Sudah Penuh, enqueue gagal");
}
else{
(*Q).rear=((*Q).rear+1) %MAX;
(*Q).data[(*Q).rear]= malloc(strlen(nama)+1);
strcpy((*Q).data[(*Q).rear],nama);
(*Q).count++;

~2~
}
}

void dequeue(Queue*Q){
if(isEmpty(*Q)){
printf("Antrian kosong, dequeue gagal");
}
else {
free((*Q).data[(*Q).front]);
(*Q).front=((*Q).front+1) %MAX;
(*Q).count--;
}
}
Buatlah prosedur dalam bahasa C untuk mencetak nama-nama pasien yang ada dalam
antrian. Salin dan jelaskan kode program di sini.
void Tampil(Queue Q){
int i;
for (i=0;i<Q.count;i++){
printf("Antrian ke[%d]=%s\n",i,Q.data[(Q.front+i)%MAX]);

}
}

Menggunakan perulangan for


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.
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.
int main(){
create(&Q);
int input;
char data[50];
printf("PROGRAM ANTRIAN PASIEN\n");
printf("[1] Tambah Pasien\n");
printf("[2] Panggil Pasien\n");
printf("[3] Tampil Daftar Antrian\n");
printf("[4] Keluar\n");

do{
printf("\nMasukkan Pilihan : "); scanf("%d", &input);
if(input == 1){
printf("Masukkan nama : "), scanf("%s", &data);
enqueue(&Q, data);

~3~
}else if(input == 2){
dequeue(&Q);
}else if(input == 3){
Tampil(Q);
}else if(input == 4){
goto end;
}else{
printf("Pilihan Salah!");
}
}while(input != 5);

end:
return 0;
}
Tampilkan hasil running program dan penjelasannya di sini.

1. Program akan meminta input berupa pilihan pada menu program sesuai dengan
kebtuhan
2. Pilihan “Panggil pasien” akan melakukan dequeue
3. Pilihan program akan terus diminta hingga mengetik pilihan 4 (keluar)

Kesimpulan
Setelah mengikuti praktikum ini, apa saja yang telah Anda pelajari?
Dapat Memahami cara kerja Queue dan diimplementasikan dalam bahasa C

Pengumpulan tugas praktikum:


Simpan laporan praktikum ini dengan nama P06_NIM.docx di folder yang sama dengan
folder tempat kode program. Namai folder dengan P06_NIM, kemudian zip. Upload ke
http://learning-if.polibatam.ac.id.

~4~

Anda mungkin juga menyukai