Anda di halaman 1dari 8

LAPORAN PRAKTIKUM ALGORITMA DAN STRUKTUR DATA

Disusun Oleh :
Selsya Survianda Yu’ant Tinaya (3121510417)

Dosen Pengampu :
Dr Arna Fariza S.Kom., M.Kom.

Program Studi Diploma 3 Pendidikan Jarak Jauh Teknik Informatika


Departemen Program Pendidikan Jarak Jauh (PJJ)
Politeknik Elektronika Negeri Surabaya
Surabaya
2022
1. Implementasikan simulasi tempat parkir dengan ketentuan :
 Hanya terdapat dua menu mobil masuk, dan mobil keluar.
 Menggunakan Queue, dan struck

Listing :

#include <stdio.h>
#include <stdlib.h>
#include <math.h>

#define MAX 10

typedef int ItemType;

typedef struct
{
ItemType item[MAX];
int front;
int rear;
int count;
} Queue;

void Inisialisasi(Queue *q)


{
q->front=q->rear=q->count=0;
}

int Kosong(Queue *q)


{
return(q->count==0);
}

int Penuh(Queue *q)


{
return(q->count==MAX);
}
void Enqueue(Queue *q,ItemType x)
{
if(Penuh(q)){
printf("Queue Penuh \n");
}else{
q->item[q->rear]=x; //x adalah inputan dari stack di main
q->rear=(q->rear+1)%MAX;
q->count++;
}
}

ItemType Dequeue(Queue *q)


{
ItemType temp=-1;
if(Kosong(q)){
printf("Parkiran Kosong ");
}else{
temp=q->item[q->front];
q->front=(q->front+1)%MAX;
q->count--;
}
return temp;
}

int main()
{
Queue parkir;
Queue tampung;
int i,nomer,menu;
char lagi='y';
Inisialisasi(&parkir);

do{
printf("\nMENU:\n");
printf("\n1.Memasukan Mobil\n");
printf("2.Mengeluarkan Mobil\n");
printf("3.Exit\n");
printf("Pilih Operasi:");scanf("%d",&menu);

switch(menu){
//memasukan
case 1:
printf("Masukan Nomerparkir:");scanf("%d",&nomer);
Enqueue(&parkir,nomer);
break;

//mengeluarkan
case 2:
fflush(stdin);
printf("\nMobil mana yang ingin di
keluarkan:");scanf("%d",&nomer);
Inisialisasi(&tampung);

while(!Kosong(&parkir)){
if(parkir.item[parkir.front]!=nomer)
Enqueue(&tampung,Dequeue(&parkir));
else
Dequeue(&parkir);
}

Inisialisasi(&parkir);
while(!Kosong(&tampung)){
Enqueue(&parkir,Dequeue(&tampung));
}
break;
default:printf("\nTerimakasih telah menggunakan
program");exit(1);
}

printf("\n\nParkiran:\n");
int k=parkir.front;

while(k!=parkir.rear){
printf("Mobil ke %d \n",parkir.item[k]);
k=(k+1)%MAX;
}

}while(menu!=3);
}

Output

 Mobil masuk
 Mobil keluar
 Exit

Analisa :

Program ini adalah program antrian parkir mobil yang


menggunakan queue dan stack. Sebenarnya dengan Queue
saja sudah cukup untuk membuat ini berjalan. memasukkan
dan mengeluarkan mobil secara berurut yang sesuai dengan
pengertian queue yaitu linear list dimana data dimasukkan
melalui sebuah ujung yang disebut end/rear dan dihapus
melalui ujung lainnya yang disebut front, tetapi agar program
ini lebih terlihat kompleks kita memerlukan yang namanya
stack. Stack membantu untuk mengeluarkan mobil yang
bukan di depan (bisa ditengah ataupun dibelakang).
KESIMPULAN

 Pada praktikum kali ini saya lebih banyak tahu mengenai


Queue dan stuck
 Fungsi Queue sendiri pada praktikum ini yang saya pahami
adalah sebagai antrian yang jika antrian pertama sudah
berjalan maka antrian tersebut akan dihapus dan lanjut ke
antrian setelahnya.
 Sedangkan stack adalah salah satu list linier dalam struktur
data yang digunakan untuk menyimpan dan mengambil data
dengan konsep LIFO (Last In First Out). Dimana dalam stack
ini kumpulan data yang masuk diletakkan di atas data yang
lain, dan berdasar konsep LIFO maka data yang terakhir kali
disimpan dalam stack akan menjadi data yang pertama kali
diambil.

Anda mungkin juga menyukai