• Tidak ada hasil yang ditemukan

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

N/A
N/A
Protected

Academic year: 2021

Membagikan "LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom"

Copied!
36
0
0

Teks penuh

(1)

LINKED LIST

(2)

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.

(3)

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.

(4)

Apabila setiap kali anda ingin menambahkan data

selalu dengan menggunakan variabel pointer yang

baru, anda akan membutuhkan banyak sekali

variabel pointer(penunjuk).

Oleh karena itu ada baiknya jika anda hanya

menggunakan satu variabel pointer saja untuk

menyimpan banyak data dengan metode yang kita

sebut

Linked List.

Jika diterjemahkan, maka berarti suatu daftar isi

yang saling berhubungan.

(5)

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)

(6)

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

(7)

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 next info next info next start

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

(8)

Definisi ….

Kerugian dengan representasi suatu data dengan

linked list ini, yaitu :

Diperlukan ruang tambahan untuk menyatakan/tempat field

pointer.

Diperlukan waktu yang lebih banyak untuk mencari suatu

node dalam linked list.

Keuntungannya adalah :

Jenis data yang berbeda dapat di-link.

Operasi REMOVE/DELETE atau INSERT hanya dilakukan

(9)

Operasi Dasar 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 :

Test apakah sama dengan NULL.

Test untuk kesamaan dengan variabel pointer lain.

Menetapkan sama dengan NULL.

(10)

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

(11)

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 start info info info info next next next next null P node ke-1 node ke-2 node ke-3 node ke-4

(12)

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

(13)

Insert LIFO ….

Pembuatan simpul pada suatu linked list disebut

dengan istilah INSERT.

Jika linked list dibuat dengan Metode FIFO maka

(14)

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.

(15)

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;

(16)

Insert LIFO ….

procedure CreateList (Var L:List); begin

L:=nil; end;

(17)

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;

(18)

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;

(19)

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.

(20)
(21)

Insert (FIFO)

FIFO adalah suatu metode pembuatan Linked List

dimana data yang masuk paling awal adalah data

yang keluar paling awal.

(22)

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;

(23)

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;

(24)
(25)

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;

(26)

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;

(27)

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;

(28)

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;

(29)

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;

(30)

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;

(31)

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;

(32)

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;

(33)

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;

(34)

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);

(35)

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;

(36)

'5' : begin penjumlahan(L, sum); end; '0':exit; end; writeln;

writeln ('Tekan Enter Untuk Mengulang Program'); readln;

goto ulang; end.

Referensi

Dokumen terkait

Sebuah skripsi yang diajukan untuk memenuhi salah satu syarat memperoleh. gelar Sarjana pada Fakultas Pendidikan Matematika dan Ilmu Pengetahuan

Untuk tiga provinsi dengan peringkat perekonomian daerah yang terbawah, y a k Provinsi Nusa Tenggara barat, Bengkulu, dan Maluku, hampir semua sub-indikatomya berada

ƒ Waktu akses sangat variabel, bergantung pada lokasi data yang g , g g p y g akan dituju dan data sebelumnya. Contoh:

Berdasarkan pada tabel 13 uji variabel in the equition di atas, koefisien variabel rasio perputaran kas diperoleh dengan nilai sebesar - 0.0001 dengan nilai signifikan

Diambil satu segmen garis dy yang di dalamnya mengandung muatan sejumlah dQ sehingga akan mengakibatkan medan listrik di titik P sebesar dE..

Alamat Lokasi kegiatan : Desa Ciherang Pondok dan Desa Ciderum, Kecamatan Caringin, Kabupaten