36
LINKED LIST Altien Jonathan Rindengan, S.Si, M.Kom

Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Embed Size (px)

Citation preview

Page 1: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

LINKED LIST

Altien Jonathan Rindengan, S.Si, M.Kom

Page 2: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Pendahuluan

Dalam suatu linear list kita dapat melakukan operasipenyisipan atau penghapusan atas elemen-elemennyapada sembarang posisi.

Misalkan ada 1500 item yang merupakan elemen darisuatu linear list.

Jika elemen ke-56 akan kita keluarkan, maka elemenke-1 s/d elemen ke-55 tidak akan berubah posisinyapada linear list tersebut. Tetapi elemen ke-57 akanmenjadi elemen ke-56, elemen ke-58 akan menjadielemen ke-57 dst. Selanjutnya, jika kita sisipkan satuelemen pada posisi setelah elemen ke-41, makaelemen ke-42 s/d elemen ke-1500 akan berubahposisinya.

Page 3: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Pendahuluan ….

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.

Page 4: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Apabila setiap kali anda ingin menambahkan data selalu dengan menggunakan variabel pointer yang baru, anda akan membutuhkan banyak sekalivariabel pointer(penunjuk).

Oleh karena itu ada baiknya jika anda hanyamenggunakan satu variabel pointer saja untukmenyimpan banyak data dengan metode yang kitasebut Linked List.

Jika diterjemahkan, maka berarti suatu daftar isiyang saling berhubungan.

Pendahuluan ….

Page 5: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Pendahuluan ….

Dalam pembuatan Single Linked List dapat

menggunakan 2 Metode :

LIFO ( Last In First Out ), aplikasinya : Stack (Tumpukan)

FIFO ( First In First Out ), aplikasinya : Queue (Antrian)

Page 6: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

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 (link field/next pointer field), berisi alamat dari

elemen (node) selanjutnya yang dituju.

Page 7: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Definisi ….

Berikut ini sebuah contoh linked list yang terdiri atas

4 node :

Pada node ke-4 field NEXT-nya berisi NULL, artinya

node ke-4 tsb. adalah node terakhir.

info next info info infonext next nextstart

node ke-1 node ke-2 node ke-3 node ke-4

null

Page 8: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Definisi ….

Kerugian dengan representasi suatu data denganlinked list ini, yaitu :

Diperlukan ruang tambahan untuk menyatakan/tempat field pointer.

Diperlukan waktu yang lebih banyak untuk mencari suatunode dalam linked list.

Keuntungannya adalah :

Jenis data yang berbeda dapat di-link.

Operasi REMOVE/DELETE atau INSERT hanya dilakukandengan mengubah pointer-nya saja.

Page 9: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Operasi Dasar Linked List

Ada beberapa aturan yang didefinisikan pada operasididalam linked list, yaitu :

- Jika P adalah suatu variabel pointer, maka nilainyaadalah alamat atau lokasi dari variabel lain yang dituju.

- Operasi yang didefinisikan pada suatu variabelpointer adalah :

Test apakah sama dengan NULL.

Test untuk kesamaan dengan variabel pointer lain.

Menetapkan sama dengan NULL.

Menetapkan menuju ke node lain.

Page 10: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Operasi Dasar Linked List ….

Notasi yang didefinisikan sehubungan dengan

operasi diatas adalah :

NODE(P), artinya node yang ditunjuk oleh pointer P.

INFO(P), artinya nilai INFO dari node yang ditunjuk

pointer P.

NEXT(P), artinya hubungan (link) selanjutnya dari node

yang ditunjuk oleh pointer P.

Page 11: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Operasi Dasar Linked List ….

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

INFO(P) = A

NEXT(P) = node ke-dua

INFO(NEXT(NEXT(P))) = C

A

B

C

D

startinfo

info

info

info

next

next

next

next

null

P

node ke-1

node ke-2

node ke-3

node ke-4

Page 12: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert (LIFO)

LIFO (last in first out) adalah suatu metode

pembuatan Linked List dimana data yang masuk

paling akhir adalah data yang keluar paling awal.

Input data di awal list

Hal ini dapat dianalogikan dengan menumpukan

barang pada kehidupan sehari‐hari.

Page 13: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert LIFO ….

Pembuatan simpul pada suatu linked list disebut

dengan istilah INSERT.

Jika linked list dibuat dengan Metode FIFO maka

penambahan/insert simpul dilakukan di BELAKANG.

Page 14: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert LIFO ….

Procedure Insert

Istilah INSERT berarti menambahkan sebuah simpul

baru ke dalam suatu linked list.

Berikut adalah deklarasi tipe data dan variabel yang

dapat digunakan sebagai deklarasi awal dan

procedure InsertFirst.

Page 15: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert LIFO ….

program linklist_insert;

uses crt;

Type

SLL=^data;

data=record

info:integer;

next:SLL;

end;

list=SLL;

node=SLL;

var L:list;

sum,ElmIn:Integer;

jawab:char;

Tipe data pointer-record

Page 16: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert LIFO ….

procedure CreateList (Var L:List);

begin

L:=nil;

end;

Page 17: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert LIFO ….

Procedure InsertFirst (Var L:List; elm:integer);

var P:Node;

begin

New(P);

P^.info:=Elm;

if L = nil then

Begin

L:=P;

P^.next:=Nil;

end

else

begin

P^.next:=L;

L:=P;

end;

end;

Page 18: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

LIFO ….Procedure Tampil (Var L:List);

Var P:Node;

Begin

clrscr;

if L<> Nil then

begin

P:=L;

write (P^.info);

write (' ');

P:=P^.next;

while P<>nil do

begin

write (p^.info);

write (' ');

p:=P^.next;

end;

end;

writeln;

end;

Page 19: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert LIFO ….label ulang;

begin {PROGRAM UTAMA}

createlist(L);

ulang:

clrscr;

tampil(L);

writeln;

write('Masukkan elemen linked list = ');

readln (ElmIn);

InsertFirst(L,ElmIn);

tampil(L);

writeln;

write('Apakah akan menginput ulang Y/N) ?');readln(jawab);

if (jawab='y') or (jawab='Y') then goto ulang;

readln;

end.

Page 20: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel
Page 21: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert (FIFO)

FIFO adalah suatu metode pembuatan Linked List

dimana data yang masuk paling awal adalah data

yang keluar paling awal.

Input data di akhir list

Page 22: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert LIFO ….Procedure InsertFirst (Var L:List; elm:integer);

var P:Node;

begin

New(P);

P^.info:=Elm;

if L = nil then

Begin

L:=P;

P^.next:=Nil;

end

else

begin

P^.next:=L;

L:=P;

end;

end;

Page 23: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert LIFO ….Procedure InsertLast (Var L:list;elm:integer);

Var Pt,P : Node;

begin

new(P);

P^.info:=elm;

if L=Nil then

begin

L:=P;

P^.next:=nil;

end

else

begin

Pt:=L;

while (Pt^.next<>Nil) do Pt:=Pt^.next;

P^.next:=Nil;

Pt^.next:=P;

end;

end;

Page 24: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Insert FIFO ….

Page 25: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Remove/Delete

procedure DeleteFirst(var L:List);

var P : Node;

begin

if (L<>Nil) then

begin

if L^.next = nil then

begin

P:=L;

dispose(P);

L:=nil;

end

else

begin

P:=L;

L:=L^.next;

P^.next:=Nil;

dispose(P);

end;

end;

end;

Page 26: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Remove/Delete ….

procedure DeleteLast(var L:List);

var Prec,Pt : Node;

begin

if (L<>Nil) then

begin

Pt:=L;

Prec:=Nil;

while (Pt^.next<>Nil) do

begin

Prec:=Pt;

Pt:=Pt^.next;

end;

if (Prec=Nil) then

begin

dispose(pt);

L:=nil;

end

else

begin

Prec^.next:=Nil;

dispose(Pt);

end;

end;

end;

Page 27: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Program Lengkap

Program SingleLinkList;

uses CRT;

Type

SLL=^data;

data=record

info:integer;

next:SLL;

end;

List=SLL;

Node=SLL;

var L:list;

pilih:char;

sum,ElmIn:Integer;

Procedure CreateList (Var L:List);

begin

L:=nil;

end;

Page 28: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Procedure InsertFirst (Var L:List; elm:integer);

var

P:Node;

begin

New(P);

P^.info:=Elm;

if L = nil then

Begin

L:=P;

P^.next:=Nil;

end

else

begin

P^.next:=L;

L:=P;

end;

end;

Page 29: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Procedure InsertLast (Var L:list;elm:integer);

var

Pt,P : Node;

begin

new(P);

P^.info:=elm;

if (L=Nil) then

begin

L:=P;

P^.next:=nil;

end

else

begin

Pt:=L;

while (Pt^.next<>Nil) do

Pt:=Pt^.next;

P^.next:=Nil;

Pt^.next:=P;

end;

end;

Page 30: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

procedure DeleteFirst(var L:List);

var P : Node;

begin

if (L<>Nil) then

begin

if L^.next = nil then

begin

P:=L;

dispose(P);

L:=nil;

end

else

begin

P:=L;

L:=L^.next;

P^.next:=Nil;

dispose(P);

end;

end;

end;

Page 31: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

procedure DeleteLast(var L:List);

var Prec,Pt : Node;

begin

if (L<>Nil) then

begin

Pt:=L;

Prec:=Nil;

while (Pt^.next<>Nil) do

begin

Prec:=Pt;

Pt:=Pt^.next;

end;

if (Prec=Nil) then

begin

dispose(pt);

L:=nil;

end

else

begin

Prec^.next:=Nil;

dispose(Pt);

end;

end;

end;

Page 32: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Procedure penjumlahan(var L:List; var sum: integer);

var pt: node;

begin

Sum:=0;

Pt:= L;

Sum:=Sum+Pt^.info;

while Pt^.next<>nil do

begin

Pt:=Pt^.next;

Sum:=Sum+Pt^.info;

end;

writeln;

write ('Hasil penjumlahan elemen single link

list adalah ',sum,'');

writeln;

end;

Page 33: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

Procedure Tampil (Var L:List);

Var P:Node;

Begin

clrscr;

if L<> Nil then

begin

P:=L;

write (P^.info);

write (' ');

P:=P^.next;

while P<>nil do

begin

write (p^.info);

write (' ');

p:=P^.next;

end;

end;

writeln;

end;

Page 34: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

label ulang;

begin

createlist(L);

ulang:

clrscr;

tampil(L);

writeln;

writeln;

writeln ('========= Program Single Linked List =======');

writeln;

writeln('1. Insert First');

writeln('2. Insert Last');

writeln('3. Delete Fisrt');

writeln('4. Delete Last');

writeln('5. Penjumlahan');

writeln('0. Exit');

write('Pilih = ');

readln(pilih);

Page 35: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

case pilih of

'1' : begin

write('Masukkan Elemen Single Linked List = ');

Readln (ElmIn);

InsertFirst(L,ElmIn);

tampil(L);

end;

'2' : begin

write('Masukkan Elemen Single Linked List = ');

Readln (ElmIn);

insertlast(L,ElmIn);

tampil(L);

end;

'3' : begin

deletefirst(L);

tampil(L);

end;

'4' : begin

deletelast(L);

tampil(L);

end;

Page 36: Algoritma pengurutan (sorting algorithm) · LIFO (last in first out) adalah suatu metode pembuatan Linked List dimana data yang masuk ... Berikut adalah deklarasi tipe data dan variabel

'5' : begin

penjumlahan(L, sum);

end;

'0':exit;

end;

writeln;

writeln ('Tekan Enter Untuk Mengulang Program');

readln;

goto ulang;

end.