MODUL 9 ANTRIAN (QUEUE)
LAPORAN PRAKTIKUM STRUKTUR DATA MODUL IX
ANTRIAN (QUEUE)
ANDIKA PRATAMA
20160910005
SI 2016 B
UNIVERITAS KUNINGAN
DASAR TEORI
Antrian (queue) adalah suatu kumpulan data yang penambahan elemenya hanya bisa dilakukan pada suatu ujung (disebut dengan sisi belakang atau rear) dan penghapusan atau pengambilan elemen dilakukan lewar ujung yang lain (disebut dengan sisi depan atau front. Antrian mempunyai prinsip FIFO (first in first out) bahwa yang pertama masuk maka yang pertama keluar.
Operasi dasar queue :
create queue/initqueue/clearqueue : untuk inisialisai antrian
emptyqueue : untuk melakukan cek apakah antrian dalam keadaan kossong
fullqueue : untuk melakukan cek apakah antrian sudah penuh
enqueue : menambha/memasukan elemen baru
dequeue : mengeluarkan elemen paling depan dari antrian
Praktikum 9.1
Compiler : Borland C++
- syntax
#include<stdio.h>
#include<conio.h>
void main()
{
int cek=0, data[8], x, hapus;
char pil;
do
{
clrscr();
cout<<" Praktikum Struktur Data Queue "<<endl;
cout<<" ANDIKA PRATAMA "<<endl;
cout<<" UNIVERSITAS KUNINGAN "<<endl;
printf("d. Masukan Data Antrian \n");
printf("e. Hapus Data Antrin \n");
printf("n. Lihat Data Antrian \n");
printf("y. Exit Program \n");
cout<<endl;
printf(" Ketikan Huruf Dari Salah Satu Pilihan Diatas ");
pil=getche();
cout<<endl;
if (pil!='d' && pil !='e' && pil !='n' && pil!='y')
printf("\n\n salah ketik, ulangi lagi .. \n");
else
{
if(pil=='d')
{
if(cek==8)
{
printf("\n Antrian Penuh\n");
getch();
}
else
{
printf("\n MASUKKAN ANGKA->"); scanf("%i",&x);
data[cek]=x;
cek++ ;
}}
else {
if(pil=='e')
{
if(cek==0)
printf("\nMaaf Tidak Antrian Untuk Dihapus \n\n");
else
{
hapus=data[0];
for(int v=0; v<cek; v++)
data[v]=data[v+1];
data[cek-1]=NULL;
cek--;
cout<<endl;
printf("Yakin Anda Ingin Data Ini Dihapus ?? ");
cout<<endl;
printf("\nData dengan nilai = %i akan terhapus. [Tekan Enter]",hapus);
}
getch();
}
else
{
if(pil=='n')
{
if(cek==0)
printf("\n Maaf Tidak Ada Antrian Untuk Di Tampilkan. \n\n");
else
{
printf("\n");
for(int z=0; z<cek; z++)
{
printf(" [ %i ] \n",data[z]);
}
}
getch();
}
}
}
}
}while(pil!='y');
cout<<endl;
cout<<endl;
printf(" Yakin Anda Ingin Keluar .. ?? {{{ Tekan Enter Cak }}} ");
pil=getche();
}
- hasil run
- analisis
program diatas adalah program dimana
antrian nilai terjadi atau sering diesebut dengan queue dalam Bahasa C,program
diatas pertama memilih 4 pilihan yang pertama menginput nilai,kedua menghapus
nilai,ketiga melihat nilai,keempat adalah keluar atau exit,proses tersebut
bekerja karena menggunakan intruksi pemilihan if else , do dan while.
if (pil!='d' && pil !='e'
&& pil !='n' && pil!='y')
printf("\n\n salah ketik,
ulangi lagi .. \n");
else
{
if(pil=='d')
{
if(cek==8)
{
printf("\n Antrian
Penuh\n");
getch();
}
else
{
printf("\n MASUKKAN
ANGKA->"); scanf("%i",&x);
data[cek]=x;
cek++ ;
}}
else {
if(pil=='e')
{
if(cek==0)
printf("\nMaaf Tidak Antrian
Untuk Dihapus \n\n");
else
{
hapus=data[0];
for(int v=0; v<cek; v++)
data[v]=data[v+1];
data[cek-1]=NULL;
cek--;
cout<<endl;
printf("Yakin Anda Ingin
Data Ini Dihapus ?? ");
cout<<endl;
printf("\nData dengan nilai =
%i akan terhapus. [Tekan Enter]",hapus);
}
getch();
}
else
{
if(pil=='n')
{
if(cek==0)
printf("\n Maaf Tidak Ada
Antrian Untuk Di Tampilkan. \n\n");
else
{
printf("\n");
for(int z=0; z<cek; z++)
{
printf(" [ %i ]
\n",data[z]);
}
}
getch();
}
}
}
}
}while(pil!='y');
cout<<endl;
cout<<endl;
printf(" Yakin Anda Ingin
Keluar .. ?? {{{ Tekan Enter Cak }}} ");
pil=getche();
Praktikum 9.2
Compiler : Borland C++
- syntax
#include<stdio.h>
#include<stdlib.h>
#include<conio.h>
struct node{
int data;
struct node*p;};
void TambahElemen (struct node **d,
struct node **b, int nilai){
/*membuat struktur node baru*/
struct node*temp;
temp=(struct node *)malloc (sizeof
(struct node));
/*mendefinisikan field yang terdapat
pada struktur node yang baru dialokasikan*/
temp->data=nilai;
temp->p=NULL;
if(*d== NULL){
*d= temp;
}else{
(*b)->p=temp;}
*b=temp;}
void HapusElemen (struct node **d,
struct node **b){
struct node*temp;
if(*d == NULL){
printf("Tidak terdapat elemen
dalam queue");
}else{
temp= *d;
*d= temp->p;
free(temp);
if(*d == NULL){
*b=NULL;
}
}
}
void TampilkanNilai(struct node *d){
int nilai;
while(d != NULL){
nilai = d->data;
printf("%d\n",nilai);
d=d->p;}
}
int main(void){
struct node*depan, *belakang;
depan = belakang =NULL;
TambahElemen(&depan,&belakang,10);
TambahElemen(&depan,&belakang,20);
TambahElemen(&depan,&belakang,30);
TambahElemen(&depan,&belakang,40);
TampilkanNilai(depan);
HapusElemen(&depan,&belakang);
printf("Nilai-Nilai didalam
queue");
printf("Setelah penghapusan
elemen pertama:\n");
TampilkanNilai(depan);
getch();
return 0;
}
}
- hasil run
- analisis
Program ini adalah program sebuah
antrian lalu dalam program ini terdapat perintah untuk penghapusan antrian.
Dalam program ini menggunakan intruksi function dan pointer.
void HapusElemen (struct node **d,
struct node **b){
struct node*temp;
if(*d == NULL){
printf("Tidak terdapat elemen
dalam queue");
}else{
temp= *d;
*d= temp->p;
free(temp);
if(*d == NULL){
*b=NULL;
}
}
}
Function diatas atau function Hapus
Elemen berguna untuk menghapus sebuah antrian.yang mana dalam function
terdapat sebuah perintah if berguna untuk menentukan kodisi apakah
terdapat antrian atau tidak.
void TampilkanNilai(struct node *d){
int nilai;
while(d != NULL){
nilai = d->data;
printf("%d\n",nilai);
d=d->p;}
}
Dan untuk function TampilkanNilai
berfungsi untuk menampilkan antrian yang belum dihapus antriannya dan yang
sudah, jadi tergantung penempatan funtion jika function ditempatkan sebelum
function hapus maka antrian yang sebelum di hapus akan tampil, dan jika di
letakan setelah function hapus maka antrian pun berubah dan hasilnya antian
yang telah terhapus yang akan keluar.
Comments
Post a Comment