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<iostream.h>
#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

Popular Posts