Anda di halaman 1dari 21

TUGAS MAKALAH

STRUKTUR DATA
LINKED LIST

Oleh:
SUPIYAN SAURI
BAYU DEPNANTO
INDRA GUNAWAN

Sekolah Tinggi Manajemen Informatika & Komputer

TEKNOKRAT
Jl. Zainal Abidin Pagar Alam 9-11 Kedaton
Telp. (0721) 784945, 709607, 774061, 702022 (hunting) Bandarlampung
1

KATA PENGANTAR
Puji syukur penulis panjatkan kehadirat Allah SWT, yang atas rahmat-Nya
maka penulis dapat menyelesaikan penyusunan makalah yang berjudul .
Penulisan makalah merupakan salah satu tugas mata kuliah struktur data
Perguruan Tinggi Teknokrat.
Ucapan terima kasih penulis berikan kepada teman-teman yang sudah
membantu dalam penyusunan makalah ini.
Akhirnya penulis berharap semoga Allah memberikan imbalan yang setimpal
pada mereka yang telah memberikan bantuan, dan dapat menjadikan semua bantuan
ini sebagai ibadah, Amiin Yaa Robbal Alamiin.
Dalam Penulisan makalah ini penulis merasa masih banyak kekurangankekurangan baik pada teknis penulisan maupun materi, mengingat akan kemampuan
yang dimiliki penulis. Untuk itu kritik dan saran dari semua pihak sangat penulis
harapkan demi penyempurnaan pembuatan makalah ini.

Bandar Lampung, Desember 2013

Penulis

DAFTAR ISI
Kata Pengantar.......................................................................................................................
2
Daftar Isi................................................................................................................................
3
Bab I Pendahuluan.................................................................................................................
4
Definisi
.................................................................................................................................
4
Bab II Pembahasan................................................................................................................
6
Sunnah Rasulullah SAW Dalam Menghadapi Pemerintah
...............................................6
Ahlus Sunnah wal Jamaah
6

Indonesia Bukan Negara Islam, Layakkah Ditaati?


.................................................................................................................................
7
Bolehkah Membangkang Kepada Pemerintah Indonesia karena Tidak Berhukum
dengan Syariat Islam?
.................................................................................................................................
11

.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
.................................................................................................................................
Apabila pemerintah itu berlaku zalim
.................................................................................................................................
13
Hikmah terus mentaati pemerintah dan tidak menggulingkan kerajaan
.................................................................................................................................
14
Syarat Boleh Memerangi Pemerintah
.................................................................................................................................
15
Bab III Penutup......................................................................................................................
16
Kesimpulan
.................................................................................................................................
16

BAB I
PENDAHULUAN
Dalam suatu linear list kita dapat melakukan operasi penyisipan atau penghapusan
atas elemen-elemennya pada sembarang posisi.
Misalkan ada 1500 item yang merupakan elemen dari suatu linear list.
Jika elemen ke-56 akan kita keluarkan, maka elemen ke-1 s/d elemen ke-55 tidak
akan berubah posisinya pada linear list tersebut. Tetapi elemen ke-57 akan menjadi
elemen ke-56, elemen ke-58 akan menjadi elemen ke-57 dst. Selanjutnya, jika kita
sisipkan satu elemen pada posisi setelah elemen ke-41, maka elemen ke-42 s/d elemen
ke-1500 akan berubah posisinya.
Untuk menyatakan keadaan diatas diperlukan suatu konsep yang berbeda dengan
konsep sekuensial sebelumnya.
Linked list merupakan

suatu cara non-sekuensial yang

digunakan untuk

merepresentasikan suatu data.


Definisi
Linked list (one way list) adalah suatu kumpulan elemen data (yang disebut sebagai
node) dimana urutannya ditentukan oleh suatu pointer.
Setiap elemen (node) dari suatu linked list terdiri atas dua bagian, yaitu :
- INFO, berisi informasi tentang elemen data yang bersangkutan.
- NEXT
selanjutnya

(link field/next pointer field), berisi alamat dari elemen (node)


yang dituju.

Berikut ini sebuah contoh linked list yang terdiri atas 4 node :
5

start

info

next

info

next

info

next

info

next
null

node ke-1

node ke-2

node ke-3

node ke-4

Pada node ke-4 field NEXT-nya berisi NULL, artinya node ke-4 tsb. adalah node
terakhir.
Node-node dalam linked list tidak harus selalu digambarkan paralel seperti pada
gambar diatas. Linked list pada contoh diatas dapat pula digambarkan seperti berikut
ini :
info

info

next

next
null
info

next
info

next

CATATAN :
- Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan linked list
ini,
yaitu :
1. Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.
2. Diperlukan waktu yang lebih banyak untuk mencari suatu node dalam
linked list.
- Sedangkan keuntungannya adalah :
1. Jenis data yang berbeda dapat di-link.
2. Operasi REMOVE atau INSERT hanya dilakukan dengan mengubah
pointer-nya saja.

BAB II
PEMBAHASAN
OPERASI DASAR PADA LINKED LIST.
Ada beberapa aturan yang didefinisikan pada operasi didalam linked list, yaitu :
-

Jika P adalah suatu variabel pointer, maka nilainya adalah alamat atau lokasi

dari variabel lain yang dituju.


-

Operasi yang didefinisikan pada suatu variabel pointer adalah :


1. Test apakah sama dengan NULL.
2. Test untuk kesamaan dengan variabel pointer lain.
3. Menetapkan sama dengan NULL.
4. Menetapkan menuju ke node lain.

Notasi yang didefinisikan sehubungan dengan operasi diatas adalah :


1. NODE(P), artinya node yang ditunjuk oleh pointer P.
2. INFO(P), artinya nilai INFO dari node yang ditunjuk pointer P.
3. NEXT(P), artinya hubungan (link) selanjutnya dari node yang ditunjuk oleh
pointer P.
Sebagai contoh, perhatikan linked list dibawah ini :

info
start

info

next

next
info

next

node ke-2
node ke-1

node ke-3

info

next

null

node ke-4

NODE(P) = node yang ditunjuk oleh P yaitu node pertama.


INFO(P) = A
NEXT(P) = node ke-dua
INFO(NEXT(NEXT(P))) = C
MENGHAPUS SUATU NODE DARI LINKED LIST (REMOVE).
Untuk menghapus node dalam linked list digunakan procedure FREENODE.
Jika Q adalah suatu variabel pointer, maka FREENODE(Q) akan menyebabkan node
yang ditunjuk oleh variabel pointer Q dihapus dari linked list.
Perhatikan linked list berikut :
langkah ke-1 :
Q := Next(P)
info

next

info

next

info

next

info

next
...

langkah ke-2 :
Next(P) := Next(Q)

info

next

info

next

info

next

info

next

langkah ke-3 :
Freenode(Q)

procedure Freenode(Q)
(a)

Next(Q) := Avail

info

next

Avail

info

next

next

info
...

next
null

(b)

Info(Q) := Null

(c)

Avail := Q
Q

next

Avail

next

info

next

info
...

next
null

MENYISIPKAN SUATU NODE KE DALAM LINKED LIST


Untuk menyisipkan node dalam linked list digunakan procedure GETNODE.
Jika NEW adalah suatu variabel pointer, maka GETNODE(NEW) akan menyebabkan
node yang ditunjuk oleh variabel pointer NEW disisipkan ke dalam linked list.
procedure Getnode(NEW)
if Avail = Null
then out-of-free-space

(a)

else

begin
Getnode := Avail;

Avail

(b)

info

next

info

next

info

next

info

next

...

null

Avail := Next(Avail);
Getnode

info

next

info

next

info

next

info
...

next
null

Avail

(c)

Next(Getnode) : = Null;
end;

Getnode

info

next

Avail

info

null

next

info

next

info
...

next
null

Algoritma menyisipkan sebuah Node :


(a)

Getnode(NEW);
10

(b)

Info(NEW) := Name;

NEW

info

next

Name

next

info

null

next

info

next

...

(c)

Q := Next(P)

(d)

Next(P) := NEW

NEW

info

next

Name

next

info

null

next

info

next

...

(e)

Next(NEW) := Q

NEW

info

next

Name

next

info

next

info

next

Logika Linked List pada Array


(a)

Jika tidak menggunakan logika linked list


(pada umumnya dalam meng-input data digunalan cara sequential)

11

Awal

Insert E

Delete

Insert F

C
1
2
3
4

A
C

1
2
3
4

(b)

1
2
3
4

1
2
3
4

A
E
F

Insert G
(overflo

Delete
1
2
3
4

A
C
E

w)
A

1
2
3
4

Jika menggunakan logika Linked List


Keadaan awal
Info

Insert E

Nex

Info

Nex

A
C
E

t
2
3
0
0

t
1
2
3
4

A
C

2
0
4
0

1
2
3
4

Insert F

1
2
3
4

Delete C
Info
1
2
3
4

Delete E

Info

Nex

A
F
E

t
3
0
2
0

Info
1
2
3
4

A
F

A
E

Nex
t
3
4
0
0

Insert G
Nex
t
2
0
4
0

1
2
3
4

Info

Nex

A
F
G

t
2
3
0

Mendefinisikan Linked List dalam Pascal


Type

nodeptr = ^ nodetype;
nametype = packed array [1..10] of char;
nodetype = record
info : nametype;
12

next : nodeptr;
end;
Var

p : nodeptr;
node : nodetype;

* Catatan :
P ^. Info

: Info dari node yang ditunjuk oleh pointer P

P^. Next

: Next dari node yang ditunjuk oleh pointer P

P := nil

: pointer P berisi nilai Null

New(P)
dispose(P)

: fungsi Getnode dalam Pascal


: procedure Freenode dalam Pascal

Menghapus sebuah Node dalam Pascal


procedure removaf(p:nodeptr, var out:nametype);
var

q : nodeptr;

begin
if (p^.Next = nil)
then

UNDERFLOW-CONDITION

else

begin
q := p^.Next;
p^.Next := q^.Next;
out := q^.Info;
dispose(q);
end;

end;
Menyisipkan sebuah Node dalam Pascal
procedure inseraf(p:nodeptr, in:nametype);
var

q : nodeptr;

begin
New(q);
13

q^.Info := in;
q^.Next := p^.Next;
p^.Next := q;
end;
Penyisipan pada akhir dari suatu Linked List (Linked List Antrean) dalam
Pascal
Procedure Inserend(first : nodeptr, in :nametype);
Var

newnode, q : nodeptr;

Begin
New(newnode);
newnode^.Info := in;
newnode^.Next := nil;
q := first;
do while (q^.next <> nil)
q := q^.Next;
q^.Next := newnode;
End;
Jika sebuah Linked List digunakan untuk menggambarkan suatu antrean, dalam hal
ini pointer dapat langsung menunjuk ke rear/akhir dari antrean untuk menghindari
pengulangan melalui semua node untuk menemukan node terakhir.
procedure inserend(in : nametype, var rear : nodeptr);
var

newnode : nodeptr;

begin
New(newnode);
newnode^.Info := in;
newnode^.Next := nil;
rear^.Next := newnode;
rear := newnode;
end;

Circular Linked List


14

first

info

next

info

next

info

next

info

next

info

next

...

Head Nodes

Head

info

next

info

next

info

next
...

Circular Linked List dengan Head Node

Head

info

next

Circular Linked List dengan Head Node kosong


Algoritma penyisipan node yang berisi variabel Name pada head dalam Linked
List
(a)

Ambil node baru pada free storage kemudian node tersebut ditunjuk oleh

pointer NEW
(b)

Isikan Info dengan Name pada node baru tsb.

(c)

Next dari node baru tsb. menunjuk ke node yang ditunjuk oleh pointer Head

(d)

Pindahkan pointer Head menunjuk ke node yang baru.

Menghapus Node Khusus


Procedure removp(head : nodeptr, var p:nodeptr, out : nametype);
15

Var

prior, this : nodeptr;


flag : 0..2;

Begin
prior := head;
this := head^.next;
flag := 1;
While flag = 1
do begin
if (this = head)
then flag := 2;
if (this = p)
then flag := 0
else begin
prior := this;
this := this^.next;
end;
end;
if (flag > 0)
then Node yang ditunjuk oleh pointer p tidak ada dalam List
else begin
prior^.next := p^.next;
out := p^.info;
dispose(p)
end;
End;

Doubly Linked List

Head

prior info next


...

16

Tiap node memiliki pointer yang menunjuk ke node sesudahnya dan pointer yang
menunjuk
ke node sebelumnya.
Node Sesudahnya : Next(Node)
Node sebelumnya : Prior(Node)
Next(Prior(P)) = P dan P = Prior(next(P))
Double Linked List Kosong :

prior

head
next

prior head next

Prior(Head) = Head
Next(Head) = Head

Dalam Pascal :
Type

nodeptr = ^ nodetype
nodetype = record
prior : nodeptr;
info : nametype;
next : nodeptr
end;

Procedure menghapus sebuah node pada Double Linked List


(a)

Set pointer P
prior info next

17

(b)

Ubah pointer pada node Next predecessor P ke node Successor P

prior info next

(c)

Ubah pointer pada node dari prior Successor P ke node Predeccssor P

prior info next

(d)

bebaskan node yang ditunjuk pointer P

Dalam Pascal :
Procedure Removp(var p:nodeptr, out : nametype);
Var

pred, succ : nodeptr;

Begin
pred := p^.prior;
succ := p^.next;
pred^.next := succ;
succ^.prior := pred;
out := p^.info;
dispose(p)
End;
Penyisipan sebuah Node pada Doubly Linked List
18

(a)

Ambil sebuah node baru dan isikan datanya

(b)

Set pointer dari Next node baru menunjuk ke Successor P dan pointer Proirnya

ke P
P

NEW

IN
AVAIL

(c)

Ubah pointer Next P menunjuk ke node baru

(d)

Ubah pointer Prior dari Successor P menunjuk ke node baru


P

NEW

IN
AVAIL

Contoh Aplikasi Linked List


Polynomial
n
n-1
2
anx + an-1 x
+ ... + a2 x + a1 x + a0

Type

nodeptr = ^nodetype;
nodetype = record
exp : integer;
coef : integer;
next : nodeptr;
19

end;
4
2
143 x + 201 x + 14 x + 2

a4 = 143

POLY 1

a3 = 0

a2 = 201

a1 = 14

a0 = 2

EXP COEF
4 143

20

14

20

BAB III
PENUTUP
Kesimpulan
Dari pemaparan yang sudah dijelaskan diatas setidaknya dapat menambah ilmu
pengetahuan kami dalam materi linked list semoga makalah ini dapat bermanfaat.

21