STRUKTUR DATA
DOSEN PENGAMPU:
OLEH:
APRILLIA STEVANI
22076029
SCREENSHOT OUTPUT
PENJELASAN
#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;
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)
{
}
}
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!".
2. PERCOBAAN 2
SCREENSHOT PROGRAM
SCREENSHOT OUTPUT
PENJELASAN
#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 )
{
else
printf("Queue penuh!\n");
break;
case 2: //dequeue //apakah queue belum kosong?
if (depan <= belakang)
{
else
printf("Queue kosong!\n");
break;
case 3:
for(i=depan; i<=belakang; i++)
printf("%d ", queue[i]);
printf("\n");
break;
}
3. LATIHAN 1
SCREENSHOT PROGRAM
SCREENSHOT OUTPUT
PENJELASAN
#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;
q->rear++;
q->mhs[q->rear] = mhs;
printf("Data berhasil dimasukkan ke dalam antrian.\n");
}
q->front++;
}
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() {
printf("^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n");
printf("= Programmer : APRILLIA STEVANI \t\t =\n");
printf("= NIM : 22076029 \t\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;
}
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.