·
Penjelasan definisi
ADT
Tipe data abstrak (ADT) dapat diartikan sebagai fungsi dari
objek data yang menyempurnakan tipe data dengan cara menghubungkan dengan
fungsi-fungsi yang beroperasi pada data yang bersangkutan. Sebagai contoh, ADT
himpunan juga didefinisikan sebagai koleksi data yang diakses oleh
operasi-operasi himpunan seperti UNION, INTERSECTION, dan SET DIFFERENCE.
Implementasi dari ADT menyediakan cara tertentu untuk
merepresentasikan unsur tipe data (seperti matrix). Secara ilmiah, kita akan
menggambarkan operasi-operasi pada ADT dengan cara algoritma (logika berfikir)
tertentu. Algoritma ini biasanya berupa urutan instruksi yang mengimplementasikan
secara tepat bagaimana operasi-operasi akan dieksekusi oleh komputer.
·
Komponen dan fungsi
apa saja yang terdapat pada ADT
typedef struct
{
infotype *T; //untuk menyimpan semua nilai
addres HEAD;
//untuk menandakan posisi nilai pertama
dan apakah list kosong
addres TAIL;
//untuk menandakan posisi nilai terakhir
int MAX; //untuk
jumlah total nilai
}Queue; //tipe bentukan data struct
·
Contoh kodingnya dalam
bahasa C
*MAIN C
#include "queue.h"
int main()
{
Queue Q;
int max;
int nilai;
int x;
printf("\t\tPROGRAM QUEUE DENGAN MEMORY DINAMIS, ALTERNATIF
1");
printf("\t\t--------------------------------------------------------------------------------\n\n");
printf("Masukan Jumlah Elemennya =
");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("\nPosisi dari Head = %d\n",HEAD(Q));
printf("Posisi dari TAIL = %d\n\n",TAIL(Q));
printf("Stack
Sudah Penuh ? = %d\n\n",IsMax(Q));
x=1;
printf("================================================\n");
while
(IsEmpty(Q)==false)
{
Del(&Q,&nilai);
printf("=> Penghapusan ke %d , dan nilai dari 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"
boolean IsMax (Queue Q)
{
return
((TAIL(Q)==MaxEl(Q))&&(HEAD(Q)==1));
}
boolean IsEmpty (Queue Q)
{
return
((TAIL(Q)==NIL)&&(HEAD(Q)==NIL));
}
void CreateEmpty (Queue *Q, int max)
{
(*Q).T = (int *)
malloc((max+1) * sizeof(int));
HEAD(*Q) =
NIL;
TAIL(*Q) =
NIL;
MaxEl(*Q) =
max;
}
int NbElmt (Queue Q)
{
return TAIL(Q);
}
void Add (Queue *Q,int val)
{
HEAD(*Q)=1;
TAIL(*Q)++;
InfoTail(*Q) =
val;
}
void Del (Queue *Q, int *val)
{
int i=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;
}
}
void Dealokasi (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
typedef int addres;
typedef int infotype;
typedef struct
{
infotype *T;
addres HEAD;
addres TAIL;
int MAX;
}Queue;
boolean IsMax (Queue Q);
boolean IsEmpty (Queue Q);
void CreateEmpty (Queue *Q, int max);
int NbElmt (Queue Q);
void Add (Queue *Q,int val);
void Del (Queue *Q, int *val);
void Dealokasi (Queue *Q);
#endif // QUEUE_H_INCLUDED
*FUNGSI.C
#include "queue.h"
boolean IsMax (Queue Q)
{
return
((TAIL(Q)==MaxEl(Q))&&(HEAD(Q)==1));
}
boolean IsEmpty (Queue Q)
{
return
((TAIL(Q)==NIL)&&(HEAD(Q)==NIL));
}
void CreateEmpty (Queue *Q, int max)
{
(*Q).T = (int *)
malloc((max+1) * sizeof(int));
HEAD(*Q) =
NIL;
TAIL(*Q) =
NIL;
MaxEl(*Q) =
max;
}
int NbElmt (Queue Q)
{
return TAIL(Q);
}
void Add (Queue *Q,int val)
{
HEAD(*Q)=1;
TAIL(*Q)++;
InfoTail(*Q) =
val;
}
void Del (Queue *Q, int *val)
{
int i=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;
}
}
void Dealokasi (Queue *Q)
{
MaxEl(*Q) = NIL;
free((*Q).T);
}
·
Penjelasan dari
kodingnya
boolean IsMax (Queue Q); //untuk mengembalikan true jika
list penuh,false jika list tidak penuh
boolean IsEmpty (Queue Q);// untuk mengembalikan true jika
list kosong,false jika list tidak kosong
void CreateEmpty (Queue *Q, int max);//untuk membuat queue
int NbElmt (Queue Q); //untuk mengembalikan total nilai
void Add (Queue *Q,int val);//untuk menambahkan nilai dalam
queue
void Del (Queue *Q, int *val);//untuk menghapus nilai dalam
queue
void Dealokasi (Queue *Q);//untuk membebaskan memori
·
Contoh bagaimana
penggunaannya untuk menyelesaikan suatu permasalah tertentu
Queue adalah sebuah
kumpulan variabel di mana hanya variabel yang terakhir dimasukkan yang dapat
diakses. Queue atau disebut juga Antrian merupakan perintah pengumpulan data
yang disebut “first-in, first-out”. Aplikasi ini meliputi jadwal pekerjaan
dalam sebuah operasi
Misalnya:
a. Antrian printer job pada sebuah jaringan
b. Antrian mahasiswa yang membayar uang kuliah di bank
c. Antrian loket bioskop, dll
Misalnya:
a. Antrian printer job pada sebuah jaringan
b. Antrian mahasiswa yang membayar uang kuliah di bank
c. Antrian loket bioskop, dll
Tidak ada komentar:
Posting Komentar