Anda di halaman 1dari 12

#include <stdio.

h>

#include <conio.h>

#define MAX 8

typedef struct

{
int data[MAX];

int head;

int tail;

}Queue;

Queue antrian;

void create()

antrian.head=antrian.tail=-1;

int isEmpty()

if(antrian.tail==-1)

return 1;

else

return 0;

int isFull()

if(antrian.tail==MAX-1)

return 1;

else

return 0;

void enqueue(int data)

if(isEmpty()==1)

antrian.head=antrian.tail=0;

antrian.data[antrian.tail]=data;

printf("%d masuk!\n",antrian.data[antrian.tail]);

}
else

if(isFull()==0)

antrian.tail++;

antrian.data[antrian.tail]=data;

printf("%d masuk!\n",antrian.data[antrian.tail]);

int dequeue()

int i;

int e = antrian.data[antrian.head];

for(i=antrian.head;i<=antrian.tail-1;i++){

antrian.data[i] = antrian.data[i+1];

antrian.tail--;

printf("%d telah dihapus!\n",e);

return e;

void clear()

antrian.head=antrian.tail=-1;

printf("data clear");

void tampil()

if(isEmpty()==0)

printf("Elemen dalam queue adalah ");

for(int i=antrian.head;i<=antrian.tail;i++){

printf("%d ", antrian.data[i]);


}

else printf("data kosong!\n");

int main()

create();

enqueue(1);

enqueue(2);

dequeue();

//dequeue();

tampil();

return 0;

1. create(): fungsi ini digunakan untuk menginisialisasi antrian, yaitu dengan mengatur head dan tail
ke nilai -1, yang menunjukkan bahwa antrian masih kosong.

2. isEmpty(): fungsi ini digunakan untuk memeriksa apakah antrian kosong atau tidak. Jika tail
bernilai -1, maka antrian dianggap kosong, sehingga fungsi ini mengembalikan nilai 1. Jika tidak,
maka antrian dianggap tidak kosong, sehingga fungsi ini mengembalikan nilai 0.

3. isFull(): fungsi ini digunakan untuk memeriksa apakah antrian sudah penuh atau belum. Jika tail
sudah mencapai batas maksimal (MAX-1), maka antrian dianggap penuh, sehingga fungsi ini
mengembalikan nilai 1. Jika tidak, maka antrian dianggap belum penuh, sehingga fungsi ini
mengembalikan nilai 0.

4. enqueue(int data): fungsi ini digunakan untuk menambahkan elemen baru ke dalam antrian. Jika
antrian masih kosong (head dan tail bernilai -1), maka elemen baru akan dijadikan elemen pertama
pada antrian (head dan tail diatur ke nilai 0). Jika antrian belum penuh, maka elemen baru akan
ditambahkan ke posisi tail yang baru dan tail akan dinaikkan satu.

5. dequeue(): fungsi ini digunakan untuk menghapus elemen pertama dari antrian dan
mengembalikan nilainya. Pertama-tama, nilai elemen pertama disimpan dalam variabel e.
Kemudian, semua elemen antrian akan digeser ke kiri satu posisi, sehingga elemen kedua menjadi
elemen pertama, elemen ketiga menjadi elemen kedua, dan seterusnya. Setelah itu, tail akan
dikurangi satu.

6. clear(): fungsi ini digunakan untuk menghapus semua elemen dalam antrian, yaitu dengan
mengatur head dan tail ke nilai -1.

7. tampil(): fungsi ini digunakan untuk menampilkan semua elemen yang ada dalam antrian. Jika
antrian tidak kosong, maka semua elemen akan ditampilkan dari elemen pertama (head) hingga
elemen terakhir (tail). Jika antrian kosong, maka akan ditampilkan pesan "data kosong!".
#include <stdio.h>

int main()

int queue[5];

int depan = -1;

int belakang = -1;

int pilihan, data, i;

do

{
printf("MENU\n");

printf("1. ENQUEUE\n2. DEQUEUE\n3. VIEW\n4. EXIT\n");

printf("Pilihan = ");

scanf("%d", &pilihan);

switch (pilihan) {

case 1: //enqueue //apakah queue belum penuh?

if (belakang < 4 )

printf("Data Masuk = ");

scanf("%d", &data);

queue[belakang+1] = data;

belakang++;

if (belakang == 0)

depan = 0;

else

printf("Queue penuh!\n");

break;

case 2: //dequeue //apakah queue belum kosong?

if (depan <= belakang)

printf("Data keluar = %d\n",

queue[depan]);

depan++;

else

printf("Queue kosong!\n");

break;

case 3:

for(i=depan; i<=belakang; i++)

printf("%d ", queue[i]);


printf("\n");

break;

while (pilihan != 4);

printf ("Good Bye");

Program tersebut merupakan implementasi sederhana dari struktur data Queue (antrian)
menggunakan array dengan ukuran maksimal 5.

1. main()<br> Fungsi utama program, bertanggung jawab untuk menampilkan menu dan memanggil
fungsi yang sesuai dengan pilihan pengguna.

2. enqueue()<br> Fungsi ini digunakan untuk menambahkan data ke dalam antrian. Jika antrian
belum penuh, data akan dimasukkan ke dalam indeks array belakang+1 dan variabel belakang akan
di-increment. Jika belakang masih sama dengan -1, maka variabel depan akan di-set ke 0.

3. dequeue()<br> Fungsi ini digunakan untuk mengeluarkan data dari antrian. Jika antrian belum
kosong, data pada indeks depan akan dikembalikan dan variabel depan akan di-increment. Jika
depan sudah sama atau lebih besar dari belakang, artinya antrian sudah kosong.

4. view()<br> Fungsi ini digunakan untuk menampilkan seluruh isi antrian dari indeks depan hingga
belakang.
#include <stdio.h>

#include <stdlib.h>

#include <string.h>

#define MAX 3

typedef struct {

char nama[50];

char nim[20];

char prodi[30];

} Mahasiswa;

typedef struct {

Mahasiswa mhs[MAX];

int front, rear;

} Queue;

void enque(Queue *q) {

if (q->rear == MAX - 1) {

printf("Antrian penuh!\n");

} else {
Mahasiswa mhs;

printf("Masukkan data mahasiswa:\n");

printf("Nama: ");

scanf(" %[^\n]s", mhs.nama);

printf("NIM: ");

scanf(" %[^\n]s", mhs.nim);

printf("Program Studi: ");

scanf(" %[^\n]s", mhs.prodi);

q->rear++;

q->mhs[q->rear] = mhs;

printf("Data berhasil dimasukkan ke dalam antrian.\n");

void deque(Queue *q) {

if (q->front > q->rear) {

printf("Antrian kosong!\n");

} else {

printf("Data mahasiswa yang keluar dari antrian:\n");

printf("Nama: %s\n", q->mhs[q->front].nama);

printf("NIM: %s\n", q->mhs[q->front].nim);

printf("Program Studi: %s\n", q->mhs[q->front].prodi);

q->front++;

void clear(Queue *q) {

q->front = 0;

q->rear = -1;
printf("Antrian berhasil dikosongkan.\n");

void print(Queue q) {

if (q.front > q.rear) {

printf("Antrian kosong!\n");

} else {

printf("Isi antrian:\n");

for (int i = q.front; i <= q.rear; i++) {

printf("%d. Nama: %s, NIM: %s, Prodi: %s\n", i+1, q.mhs[i].nama, q.mhs[i].nim,
q.mhs[i].prodi);

void cekAntrian(Queue q) {

if (q.front > q.rear) {

printf("Antrian kosong!\n");

} else {

printf("Jumlah antrian: %d\n", q.rear - q.front + 1);

int main() {

Queue q = {0, -1};

memset(q.mhs, 0, sizeof(q.mhs));

int pilihan;

do {

printf("==============================================\n");

printf("= Programmer : DINDA ATIKA SURI \t\t =\n");


printf("= NIM : 22076034 \t\t =\n");

printf("= Matkul : Latihan 1 Praktikum Struktur Data =\n");

printf("==============================================\n");

printf("PROGRAM QUEUE DATA MAHASISWA:\n");

printf("MENU UTAMA:\n");

printf("1. Enque\n");

printf("2. Deque\n");

printf("3. Clear\n");

printf("4. Print\n");

printf("5. Cek Antrian\n");

printf("6. Exit\n");

printf("Masukkan pilihan Anda: ");

scanf("%d", &pilihan);

switch (pilihan) {

case 1:

enque(&q);

break;

case 2:

deque(&q);

break;

case 3:

clear(&q);

break;

case 4:

print(q);

break;

case 5:

cekAntrian(q);

break;

case 6:
printf("Terima kasih telah menggunakan program ini.\n");

break;

default:

printf("Pilihan tidak valid! Silakan coba lagi.\n");

break;

} while (pilihan != 6);

return 0;

Program di atas merupakan sebuah program yang menerapkan konsep queue (antrian)
untuk menyimpan data mahasiswa.

1. Fungsi enque(Queue *q): Fungsi ini digunakan untuk menambahkan data mahasiswa ke dalam
antrian. Jika antrian sudah penuh, maka akan muncul pesan "Antrian penuh!" dan data tidak akan
ditambahkan. Jika antrian belum penuh, maka pengguna diminta untuk memasukkan data
mahasiswa seperti nama, NIM, dan program studi. Data mahasiswa tersebut kemudian ditambahkan
ke dalam antrian.

2. Fungsi deque(Queue *q): Fungsi ini digunakan untuk mengeluarkan data mahasiswa dari antrian.
Jika antrian kosong, maka akan muncul pesan "Antrian kosong!" dan tidak ada data yang
dikeluarkan. Jika antrian tidak kosong, maka data mahasiswa yang berada di depan antrian akan
dikeluarkan dan ditampilkan di layar.

3. Fungsi clear(Queue *q): Fungsi ini digunakan untuk mengosongkan antrian. Semua data
mahasiswa yang berada di dalam antrian akan dihapus dan antrian akan kembali kosong.

4. Fungsi print(Queue q): Fungsi ini digunakan untuk menampilkan semua data mahasiswa yang
berada di dalam antrian. Jika antrian kosong, maka akan muncul pesan "Antrian kosong!" dan tidak
ada data yang ditampilkan. Jika antrian tidak kosong, maka semua data mahasiswa akan ditampilkan
di layar.

5. Fungsi cekAntrian(Queue q): Fungsi ini digunakan untuk menampilkan jumlah data mahasiswa
yang berada di dalam antrian. Jika antrian kosong, maka akan muncul pesan "Antrian kosong!" dan
jumlah data akan ditampilkan sebagai 0.

6. Fungsi main(): Fungsi ini merupakan fungsi utama yang akan dieksekusi ketika program dijalankan.
Fungsi ini berisi menu utama program dan menggunakan switch case untuk memilih fungsi mana
yang akan dijalankan berdasarkan pilihan pengguna. Program akan terus berjalan dan menampilkan
menu hingga pengguna memilih untuk keluar dari program dengan memilih pilihan 6.

Anda mungkin juga menyukai