Selasa, 01 November 2016

Project



·         Penjelasandefinisi ADT

Tipe data abstrak (ADT) dapatdiartikansebagaifungsidariobjek data yang menyempurnakantipe data dengancaramenghubungkandenganfungsi-fungsi yang beroperasipada data yang bersangkutan. Sebagaicontoh, ADT himpunan jugadidefinisikansebagaikoleksi data yang diaksesolehoperasi-operasihimpunansepertiUNION, INTERSECTION, dan SET DIFFERENCE.
ImplementasidariADT menyediakancaratertentuuntukmerepresentasikanunsurtipe data (seperti matrix). Secarailmiah, kitaakanmenggambarkanoperasi-operasipada ADT dengancaraalgoritma (logikaberfikir) tertentu. Algoritmainibiasanyaberupaurutaninstruksi yang mengimplementasikansecaratepatbagaimanaoperasi-operasiakandieksekusiolehkomputer.


·         Komponendanfungsiapasaja yang terdapatpada ADT
typedefstruct
{
infotype *T;  //untukmenyimpansemuanilai
addres HEAD; //untukmenandakanposisinilaipertamadanapakah list kosong
addres TAIL; //untukmenandakanposisinilaiterakhir
int MAX; //untukjumlah total nilai
}Queue; //tipebentukan data struct

·         Contohkodingnyadalambahasa C


*MAIN C
#include "queue.h"

int main()
{
    Queue Q;
int max;
intnilai;
int x;

printf("\t\tPROGRAM QUEUE DENGAN MEMORY DINAMIS, ALTERNATIF 1");
printf("\t\t--------------------------------------------------------------------------------\n\n");


printf("MasukanJumlahElemennya = ");scanf("%d",&max);

CreateEmpty(&Q,max);

printf("I.S , Apakah Stack kosong? = %d\n\n",IsEmpty(Q));

while (IsMax(Q)==false)
    {
printf("Masukan Data = ");scanf("%d",&nilai);
Add(&Q,nilai);
    }

printf("\nPosisidari Head = %d\n",HEAD(Q));
printf("Posisidari TAIL = %d\n\n",TAIL(Q));

printf("Stack SudahPenuh ? = %d\n\n",IsMax(Q));

    x=1;
printf("================================================\n");
while (IsEmpty(Q)==false)
    {
Del(&Q,&nilai);
printf("=>Penghapusanke %d , dannilaidari head  = %d\n",x,nilai);
x++;
    }
printf("================================================\n");
printf("\nApakah Queue Kosong? %d\n",IsEmpty(Q));

Dealokasi(&Q);
printf("Queue Telah di Dealokasi\n");

return 0;
}








*HEADER.H
//
#include "queue.h"

booleanIsMax (Queue Q)
{
return ((TAIL(Q)==MaxEl(Q))&&(HEAD(Q)==1));
}

booleanIsEmpty (Queue Q)
{
return ((TAIL(Q)==NIL)&&(HEAD(Q)==NIL));
}

voidCreateEmpty (Queue *Q, int max)
{
    (*Q).T = (int *) malloc((max+1) * sizeof(int));
HEAD(*Q) = NIL;
TAIL(*Q) = NIL;
MaxEl(*Q) = max;
}

intNbElmt (Queue Q)
{
return TAIL(Q);
}

void Add (Queue *Q,intval)
{
HEAD(*Q)=1;
TAIL(*Q)++;
InfoTail(*Q) = val;
}

void Del (Queue *Q, int *val)
{
inti=1;

    *val = InfoHead(*Q);
do
    {
        (*Q).T[i] = (*Q).T[i+1];
i++;
    }
while (i!=NbElmt(*Q)+1);

TAIL(*Q)--;
if (TAIL(*Q)==NIL)
    {
HEAD(*Q)=NIL;
    }
}

voidDealokasi (Queue *Q)
{
MaxEl(*Q) = NIL;
free((*Q).T);
}

//
#ifndef QUEUE_H_INCLUDED
#define QUEUE_H_INCLUDED

#include "boolean.h"
#define NIL 0

#define HEAD(Q) (Q).HEAD
#define TAIL(Q) (Q).TAIL
#define InfoHead(Q) (Q).T[(Q).HEAD]
#define InfoTail(Q) (Q).T[(Q).TAIL]
#define MaxEl(Q) (Q).MAX

typedefintaddres;
typedefintinfotype;

typedefstruct
{
infotype *T;
addres HEAD;
addres TAIL;
int MAX;
}Queue;

booleanIsMax (Queue Q);
booleanIsEmpty (Queue Q);
voidCreateEmpty (Queue *Q, int max);
intNbElmt (Queue Q);
void Add (Queue *Q,intval);
void Del (Queue *Q, int *val);
voidDealokasi (Queue *Q);


#endif // QUEUE_H_INCLUDED


*FUNGSI.C
#include "queue.h"

booleanIsMax (Queue Q)
{
return ((TAIL(Q)==MaxEl(Q))&&(HEAD(Q)==1));
}

booleanIsEmpty (Queue Q)
{
return ((TAIL(Q)==NIL)&&(HEAD(Q)==NIL));
}

voidCreateEmpty (Queue *Q, int max)
{
    (*Q).T = (int *) malloc((max+1) * sizeof(int));
HEAD(*Q) = NIL;
TAIL(*Q) = NIL;
MaxEl(*Q) = max;
}

intNbElmt (Queue Q)
{
return TAIL(Q);
}

void Add (Queue *Q,intval)
{
HEAD(*Q)=1;
TAIL(*Q)++;
InfoTail(*Q) = val;
}

void Del (Queue *Q, int *val)
{
inti=1;

    *val = InfoHead(*Q);
do
    {
        (*Q).T[i] = (*Q).T[i+1];
i++;
    }
while (i!=NbElmt(*Q)+1);

TAIL(*Q)--;
if (TAIL(*Q)==NIL)
    {
HEAD(*Q)=NIL;
    }
}

voidDealokasi (Queue *Q)
{
MaxEl(*Q) = NIL;
free((*Q).T);
}

·         Penjelasandarikodingnya

booleanIsMax (Queue Q); //untukmengembalikan true jika list penuh,falsejika list tidakpenuh
booleanIsEmpty (Queue Q);//untukmengembalikan true jika list kosong,falsejika list tidakkosong
voidCreateEmpty (Queue *Q, int max);//untukmembuat queue
intNbElmt (Queue Q); //untukmengembalikan total nilai
void Add (Queue *Q,intval);//untukmenambahkannilaidalam queue
void Del (Queue *Q, int *val);//untukmenghapusnilaidalam queue
voidDealokasi (Queue *Q);//untukmembebaskanmemori
·         Contohbagaimanapenggunaannyauntukmenyelesaikansuatupermasalahtertentu
Queue adalahsebuahkumpulanvariabel di manahanyavariabel yang terakhirdimasukkan yang dapatdiakses. Queue ataudisebutjugaAntrianmerupakanperintahpengumpulan data yang disebut “first-in, first-out”. Aplikasiinimeliputijadwalpekerjaandalamsebuahoperasi
Misalnya:
a. Antrian printer job padasebuahjaringan
b. Antrianmahasiswa yang membayaruangkuliah di bank
c. Antrianloketbioskop, dll

Tidak ada komentar:

Posting Komentar