Selasa, 02 Juli 2013

linked list

LINKED LIST
Linked List adalah rangkaian struct atau list yang disebut dengan node. Setiap node setidaknya memiliki dua anggota, salah satu poin yang menuju ke list berikutnya atau node dalam list. Ada dua jenis linked list, yaitu Single Linked List dan Double Linked List.
1. Single Linked List
Single Linked List adalah Linked List lurus dengan pointer tungal. Jadi dalam satu struktur simpul hanya ada satu elemen atau field atau variabel yang bertipe pointer yang isinya adalah alamat simpul berikutnya atau next node.

Untuk membuat pointer FIRST dan pointer LAST yang berfungsi menunjuk sebuah struktur yang bertipe Simpul, dapat ditulis sebagai berikut :
typedef struct Node {
int INFO;
struct Node *LINK;
};
typedef struct Node Simpul;
simpul *P, *FIRST, *LAST;

 Pembuatan sebuah simpul
Instruksi untuk pembuatan simpul adalah sebagai berikut :

Fungsi pembuatan sebuah simpul :
void BUAT_SIMPUL (int X)
{ P = (Simpul *) malloc (sizeof (Simpul));
if (P != NULL)
{
P->INFO = X;
}
else
printf("Pembuatan Simpul Gagal");

FUNGSI INSERT
 Insert Kanan (insert akhir)
insert kanan maksudnya adalah menginsert sebuah simpul baru diujung paling kanan, atau bila dilihat dari arah panah disebut diujung paling akhir linked list yang sudah ada. 
fungsi untuk insert kanan :


void INSERT_KANAN(void)
{
LAST->LINK = P;
LAST = P; 
P->LINK = NULL;
}

 Insert Kiri (Insert awal)
Insert kiri maksudnya adalah menginsert sebuah simpul baru diujung paling kiri, atau bila dilihat dari arah panah disebut diujung paling awal dari linked list yang sudah ada.
Fungsi untuk insert kiri :



void INSERT_KIRI (void)
{ if (FIRST ! = NULL)
{ P->LINK = FIRST;
FIRST = P; }
else
printf("Linked List Belum Ada");
}

 Insert Tengah
Insert tengah maksudnya adalah menginsert sebuah simpul baru antara dua buah simpul yang sudah ada, misalnya antara simpul (1) dan (2) atau antara (2) dan (3) dan setrusnya atau antara simpul (i) dan (i+1).



Fungsi untuk insert tengah :
void INSERT_TENGAH (void)
{
P->LINK = Q->LINK;
Q->LINK = P;



FUNGSI DELETE

 Delete kanan atau delete akhir
Delete kanan atau delete akhir maksudnya adalah menghapus simpul yang berada di ujung paling kanan.
Fungsi Delete kanan dan mencetak X;

void DeleteKanan (void)
{ int X;
X = LAST->INFO;
printf("%d", X);
free(LAST);
LAST = Q;
LAST->LINK=NULL;
}


 Delete kiri atau delete awal
Delete kiri atau delet awal maksudnya adalah menghapus simpul yang ada di ujung paling kiri.
Fungsi Delete kiri atau delete awal :

void DeleteKiri (void)
{ int X;
Q = FIRST;
X = FIRST->INFO;
printf ("%d", X);
FIRST = Q->LINK;
free(Q);
}

 Delete Tengah
Delete tengah maksudnya adalah menghapus sebuah simpul yang berada diantara dua buah simpul lain. Bukan menghapus simpul yang paling kiri dan juga bukan menghapus simpul yang paling kanan.
Fungsi Delete Tengah :


void DeleteTengah(void)
{ int X;
R = Q->LINK;
X = R->INFO;
printf ("%d", X);
Q->LINK = R->LINK;
free(R);
}


2. Double Linked List
Double Linked list maksudnya adalah Linked List dengan pointer ganda, yaitu ada dua buah pointer. Jadi dalam struktur Simpul ada dua elemen atau field atau variable yang bertipe pointer. Yang pertama menunjuk atau berisi alamat simpul sebelumnya atau previuos node, dan yang kedua menunjuk simpul berikutnya atau next node.


Contoh :
FIRST LAST


Cara membuat sebuah simpul :



left info right 
fungsi untuk membuat simpul adalah :
typedef struct Node {
struct Node *LEFT;
int INFO;
struct Node RIGHT;
};
typedef struct Node Simpul;


 Insert Kanan atau insert akhir
Insert Kanan atau insert akhir adalah untuk menambah simpul di belakang (sebalah kanan) pada sebuah double linked list. Berikut adalah penggalan Insert Kanan atau Insert akhir.

void InsertKanan (void)
{
LAST->RIGHT = P;
P->LEFT = LAST;
LAST = P;
P->RIGHT = NULL;
}

 Insert Kiri atau Insert awal
Insert kiri atau insert awal adalah untuk menambah simpul di depan (sebelah kiri). prosedure ini tidak berbeda jauh dengan prosedur insert kanan yang telah dijelaskan sebelumnya. Berikut ini adalah penggalan fungsi insert kiri.
void InsertKiri (void)
{
P->RIGHT = LAST;
LAST->LEFT = P;
LAST = P;
P->LEFT = NULL

 Insert Tengah
Insert Tengah jika suda ada double linked list yang ditunjuk oleh pointer Q. Sudah dibuat sebuah simpl baru yang ditunjuk oleh pointer P, dan P-> INFO sudah diisi.
berikut adalah penggalan fungsi Insert tengah.
void InsertTengah(void)
{
P->RIGHT = Q->RIGHT;
P->LEFT = Q;
Q->RIGHT->LEFT = P;
Q->RIGHT = P;
}



FUNGSI DELETE

 Delete Kanan atau Delete Akhir
Adalah untuk menghapus simpul dari belakang. Prosedur ini merupakan kebalikan dari prosedur Insert Kanan yang menambah simpul belakang. Berikut adalah penggalan prosedur Delete kanan.

void DeleteKanan (void)
{ int X;
X = LAST->INFO;
LAST = LAST->LEFT;
free(LAST->RIGHT);
LAST->RIGHT = NULL;
return(X);
}

 Delete Kiri atau Delete Awal
Adalah merupakan kebalikan dari prosedur Delete Kanan yang menghapus simpul dari belakang, sedangkan Delete awal akan menghapus simpul dari depan (sebelah kiri). Berikut adalah penggalan prosedure Delete kiri atau Delete awal.

void DeleteKanan (void)
{ int X;
X = LAST->INFO;
LAST = LAST->LEFT;
free(LAST->RIGHT);
LAST->RIGHT = NULL;
return(X);
}

 Delete Tengah
Adalah apabila ada double linked list dan sudah ditunjuk oleh pointer Q. Penggalan fungsi Delete Tengah adalah sebagai berikut.

void DeleteTengah (void)
{ int X;
X = Q->RIGHT->INFO;
Q->RIGHT = Q->RIGHT->RIGHT;
free (Q->RIGHT->LEFT);
Q->RIGHT->LEFT = Q;
return(X);
}
Bagikan :
Artikel terkait :

0 komentar :

Posting Komentar