Rahmady Liyantanto liyantantogmail com liyantanto wordpress com Linked

  • Slides: 21
Download presentation
Rahmady Liyantanto liyantanto@gmail. com liyantanto. wordpress. com Linked List Struktur Data S 1 Teknik

Rahmady Liyantanto liyantanto@gmail. com liyantanto. wordpress. com Linked List Struktur Data S 1 Teknik Informatika Universitas Trunojoyo

Latar Belakang Array Statis, Pasti, Alokasi variabel digunakan saat program dijalankan sampai selesai. Pointer

Latar Belakang Array Statis, Pasti, Alokasi variabel digunakan saat program dijalankan sampai selesai. Pointer Dinamis, Ukuran, sesuai kebutuhan, Alokasi variabel dapat diatur sesuai kebutuhan

Linked List Dikembangkan tahun 1955 -1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon

Linked List Dikembangkan tahun 1955 -1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon di RAND Corporation sebagai struktur data utama untuk bahasa Information Processing Language (IPL). IPL dibuat untuk mengembangkan program artificial intelligence Linked List adalah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung dan dinamis.

Linked List - - (lanjutan) Linked List saling terhubung dengan bantuan variabel pointer Masing-masing

Linked List - - (lanjutan) Linked List saling terhubung dengan bantuan variabel pointer Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri dari beberapa field. 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.

Array VS Linked List • ARRAY : – – • Statis Terbatas dalam menambah

Array VS Linked List • ARRAY : – – • Statis Terbatas dalam menambah / menghapus data Random access Penghapusan data tidak mungkin LINKED LIST : – – Dinamis Tidak terbatas dalam menambah / menghapus data Sequential access Penghapusan data mudah

CATATAN - Ada dua hal yang menjadi kerugian dengan representasi suatu data dengan linked

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.

OPERASI DASAR PADA LINKED LIST Aturan pada operasi didalam linked list, yaitu : -

OPERASI DASAR PADA LINKED LIST Aturan 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.

OPERASI DASAR PADA LINKED LIST Notasi yang didefinisikan sehubungan dengan operasi diatas adalah :

OPERASI DASAR PADA LINKED LIST 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.

Jenis link list Single Linked List 10 15 head 20 dapat juga ditulis NULL

Jenis link list Single Linked List 10 15 head 20 dapat juga ditulis NULL Double Linked List 10 head 15 prev 20 next

Single Linked List Pengertian: Single : artinya field pointer-nya hanya satu buah saja dan

Single Linked List Pengertian: Single : artinya field pointer-nya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL 10 NULL data pointer Linked List : artinya node-node tersebut saling terhubung satu sama lain. 10 15 20

10 data 15 pointer 20 NULL Setiap node pada linked list mempunyai field yang

10 data 15 pointer 20 NULL Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.

Jenis Single Linked List Single linked list dengan HEAD 10 15 20 head Single

Jenis Single Linked List Single linked list dengan HEAD 10 15 20 head Single linked list dengan HEAD dan TAIL 10 head 15 20 tail

Metode Pembuatan Single Linked List LIFO(Last In First Out)-> Stack Data yang masuk paling

Metode Pembuatan Single Linked List LIFO(Last In First Out)-> Stack Data yang masuk paling akhir adalah data yang keluar paling awal. FIFO(First In First Out)-> Queue Data yang masuk paling awal adalah data yang keluar paling awal juga.

Deklarasi Variabel Pointer Bentuk Umum var <Nama. Var>: <^Tipe. Data> Contoh type Point =

Deklarasi Variabel Pointer Bentuk Umum var <Nama. Var>: <^Tipe. Data> Contoh type Point = ^Rec Point; Rec Point = record isi: Tipe. Data; Next: Point; end; Var Head, Tail, Now: Point;

Procedure Insert (LIFO) Procedure INSERT(elemen: Tipe. Data); Var Now: Point; begin New(Now); Now^. Isi:

Procedure Insert (LIFO) Procedure INSERT(elemen: Tipe. Data); Var Now: Point; begin New(Now); Now^. Isi: =elemen; if Head=Nil then Now^. Next: =Nil else Now^. Next: =Head; Head: =Now; end;

Procedure Insert (FIFO) Procedure INSERT(elemen: Tipe. Data); Var Now: Point; begin New(Now); if Head=Nil

Procedure Insert (FIFO) Procedure INSERT(elemen: Tipe. Data); Var Now: Point; begin New(Now); if Head=Nil then Head: =Now else Tail^. Next: =Now; Tail^. Next: =Nil; Tail^. Isi: =elemen end;

Procedure Insert (FIFO)

Procedure Insert (FIFO)

Procedure dan Function Lainnya Procedure Create; begin Head: =Nil; Tail: =Nil; end; Function Empty:

Procedure dan Function Lainnya Procedure Create; begin Head: =Nil; Tail: =Nil; end; Function Empty: boolean; begin if Head=Nil then empty: =true else empty: =false; end;

Procedure dan Function Lainnya Procedure UPDATE(u: Tipe. Data); begin Now^. isi: =u; end;

Procedure dan Function Lainnya Procedure UPDATE(u: Tipe. Data); begin Now^. isi: =u; end;

Procedure dan Function Lainnya Procedure Delete. Now; Var x: Point; begin If Now<>Head then

Procedure dan Function Lainnya Procedure Delete. Now; Var x: Point; begin If Now<>Head then begin x: =Head; while x^. Next<>Now do x: =x^. Next; x^. Next: =Now^. Next; end else Head: =Head^. Next; Dispose(Now); Now: =Head end;

Procedure dan Function Lainnya Procedure Clear; begin while Head<>Nill do begin Head: =Now; Head:

Procedure dan Function Lainnya Procedure Clear; begin while Head<>Nill do begin Head: =Now; Head: =Head^. Next; Dispose(Now); end;