Anda di halaman 1dari 13

Tugas Pertemuan 7

STRUKTUR DATA

DOSEN PENGAMPU:

Ika Parma Dewi ,S.Pd.M.Pd.T.

OLEH:

APRILLIA STEVANI

22076029

Praktek Struktur Data

UNIVERSITAS NEGERI PADANG


2023
1. PERCOBAAN 1
 SCREENSHOT PROGRAM

 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;

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!".

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 )
{

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.

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;

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 : 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;
}

} 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