Berikut ini adalah *sebuah contoh*
implementasi ADT List dengan representasi sekuensial
(Array). Sekali lagi, ini hanyalah contoh. Janganlah
dibayangkan bahwa ini adalah satu-satunya implementasi
ADT List. Sama halnya dengan ADT sendiri yang merupakan
model matematis hasil 'imajinasi' kita -> dapat
berubah sesuai kebutuhan. Jadi kalau
asisten/mentor/teman/anda sendiri memiliki suatu
implementasi ADT List yang menurut anda lebih baik, by
all means, use it! #define MAX_LIST 100
/* DEFINISI IMPLEMENTASI STRUKTUR DATA */
typedef int Position;
typedef char DataType;
typedef struct
{
DataType ListArray[MAX_LIST];
Position Last;
}ListType;
typedef ListType * List;
/* IMPLEMENTASI DARI OPERASI-OPERASI YANG DITAWARKAN DI INTERFACE */
/*Menginisialisasi list baru yang dikembalikan melalui var bertipe List*/
List init()
{
List NewList;
Position P;
NewList=(ListType *)malloc(sizeof(ListType));
for(P=0;P<MAX_LIST;P++)
NewList->ListArray[P]=0;
NewList->Last=0;
return NewList;
}
/* Mengembalikan 1 kalau L kosong, 0 kalau L tidak kosong */
int is_empty(List L)
{
if(L->Last==0)
return 1;
else
return 0;
}
/* Mengembalikan panjang (jumlah unsur) dari List L */
int length(List L)
{
return L->Last;
}
/*Mengembalikan var bertipe Position yang menunjuk ke unsur ke-i dalam L*/
Position select(int i, List L)
{
if(i>L->Last+1||i<1)
{
printf("Error: Posisi ke-%d tidak ada!\n",i);
return -1;
}
else
return i;
}
/* Menyisipkan unsur 'X' di posisi 'P' dalam list 'L' */
void insert(DataType X, Position P, List L)
{
Position Q;
if(L->Last==MAX_LIST)
printf("Error: List sudah penuh!\n");
else
{
for(Q=L->Last;Q>=P;Q--)
L->ListArray[Q]=L->ListArray[Q-1];
L->ListArray[P-1]=X;
L->Last++;
}
}
/* Menghapus unsur di posisi 'P' dalam list 'L' */
void delete(Position P, List L)
{
Position Q;
for(Q=P;P<L->Last;P++)
L->ListArray[Q-1]=L->ListArray[Q];
L->Last--;
}
/* Mengubah nilai unsur di posisi 'P' dalam list 'L' menjadi 'X' */
void replace(DataType X, Position P, List L)
{
L->ListArray[P-1]=X;
}
/* Mengembalikan nilai data dari unsur di posisi 'P' dalam list 'L' */
DataType getData(Position P, List L)
{
return L->ListArray[P-1];
}
|