DEFINISI LINKED LIST
Linked list adalah suatu
cara untuk menyimpan data dengan struktur sehingga dapat secara otomatis
menciptakan suatu tempat baru untuk menyimpan data yang diperlukan. Program
akan berisi suatu struct atau definisi kelas yang berisi variabel yang memegang
informasi yang ada didalamnya, dan mempunyai suatu pointer yang menunjuk ke
suatu struct sesuai dengan tipe datanya.
Struktur dinamis ini
mempunyai beberapa keuntungan dibanding struktur array yang bersifat statis.
Struktur ini lebih dinamis, karena banyaknya elemen dengan mudah ditambah atau
dikurangi, berbeda dengan array yang ukurannya bersifat tetap.
Manipulasi setiap elemen
seperti menyisipkan, menghapus, maupun menambah dapat dilakukan dengan lebih
mudah.
Contoh :
//Program:link1.cpp
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
typedef struct nod {
int
data;
struct
nod *next;
} NOD, *NODPTR;
void CiptaSenarai(NODPTR *s)
{
*s
= NULL;
}
NODPTR NodBaru(int m)
{
NODPTR
n;
n
= (NODPTR) malloc(sizeof(NOD));
if(n
!= NULL) {
n
-> data = m;
n
-> next = NULL;
}
return n;
}
void SisipSenarai (NODPTR *s, NODPTR t,
NODPTR p)
{
if
(p==NULL) {
t
-> next = *s;
*s
= t;
}
else
{
t
-> next = p -> next;
p
->next = t;
}
}
void CetakSenarai (NODPTR s)
{
NODPTR
ps;
for
(ps = s; ps != NULL; ps = ps -> next)
printf("%d
-->", ps -> data);
printf("NULL\n");
}
int main ()
{
NODPTR
pel;
NODPTR
n;
CiptaSenarai(&pel);
n
= NodBaru(55);
SisipSenarai(&pel,
n, NULL);
n=
NodBaru(75);
SisipSenarai(&pel,
n, NULL);
CetakSenarai(pel);
return
0;
}
Bila program dijalankan
maka :
75->55->NULL
TEKNIK DALAM LINKED LIST
Pengulangan Linked List
Secara umum pengulangan ini dikenal sebagai
while loop. Kepala pointer (head pointer) dikopikan dalam variabel lokal
current yang kemudian dilakukan perulangan dalam linked list. Hasil akhir dalam
linked list dengan current!=NULL. Pointer lanjut dengan
current=current->next.
Contoh :
//
Return the number of nodes in a list (while-loop version)
int
Length(struct node * head) {
int
count = 0;
struct
node* current = head;
while
(current != NULL) {
count++;
current=current->next;
}
return
(count);
}
Membuat
Kepala Senarai Dengan Perintah Push()
Cara termudah untuk
membuat sebuah senarai dengan menambah node pada “akhir kepala” adalah dengan
push().
Contoh :
struct
node* AddAtHead() {
struct
node* head = NULL;
int
i;
for
( i=1; i<6; i++) {
push
(&head, i);
}
//
head == { 5, 4, 3, 2, 1 };
return
(head);
}
Dalam membuat tambahan
node pada akhir senarai (list) dengan menggunakan perintah Push(), jika terjadi
kesalahan maka urutan akan terbalik.