LINK LIST Latifah Rifani.

Slides:



Advertisements
Presentasi serupa
Double Linked List.
Advertisements

Single linked list.
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
LINKED LIST.
bentuknya, yang dapat berubah pada saat runtime.
LINKED LIST.
CARA MEMBUAT SINGLE LINKED LIST DENGAN BORLAND C++
Mata Kuliah : Struktur Data Pertemuan : V
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
SENARAI BERANTAI TUNGGAL
Single Linked List.
MODUL 3 SENARAI (LIST)…………………. TUMPUKAN (STACK)……………
STACK.
STRUKTUR DATA (6) single linked list non circular
Single Linked List Yuliana Setiowati, S.Kom.
Algoritma & Struktur Data Linked List Evangs Mailoa.
Linked List DELETE 6.3 & 7.3 NESTED LOOP.
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Linear Data Structures (Linked List). Node Link atau pointer data field.
Pertemuan ketujuh Struktur data st3telkom.ac.id
Linear List.
Struktur Data List Linear : Linked List (Single Linkedlist)
LINKED LIST.
Struktur Data (Data Structure) – IS 2313
Linked List.
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Rahmady Liyantanto liyantanto.wordpress.com S1 Teknik Informatika Universitas Trunojoyo Struktur Data.
BAB 5 LINKED LIST Linked list adalah struktur berupa rangkaian elemen saling berkait dimana tiap elemen dihubungkan ke elemen lain melalui pointer. Keterhubungan.
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
MATAKULIAH : STRUKTUR DATA
ADT DINAMIS : SINGLY LINKED LIST DAN DOUBLE LINKED LIST
SENARAI BERANTAI TUNGGAL
Double linked list non circular
Struktur Data Linked List
STRUKTUR DATA (2) Single Linked List
STRUKTUR DATA Linked List Oleh : Yuli Praptomo PHS, S.Kom.
STRUKTUR DATA Linked List
8. Singly Linear Linked List
Single Linked List.
Tim struktur data IF UNIKOM
Algoritma dan Struktur Data
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Defri Kurniawan DOUBLE LINKED LIST Defri Kurniawan
Linked List.
Linked List Eko Riyanto.
Struktur Data – Pertemuan 4 List Linier
MATAKULIAH : STRUKTUR DATA
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Doubel Linked List.
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Algoritme dan Stuktur Data
STRUKTUR DATA (7) single linked list circular
Linked List 6.3 & 7.3 NESTED LOOP.
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Doubel Linked List.
Single Linked List Circular (SLLC)
STRUKTUR DATA (8.2) double linked list circular
Double Linked List.
Linear Doubly INSERT KIRI
Linear Doubly Linked List
LINKED LIST MELINGKAR Linked List melingkar (circular) adalah linked list linier biasa dimana pointer pada node terakhir diarahkan kembali ke node pertama.
Variable Static & Linked List
Linked List DELETE TENGAH 6.3 & 7.3 NESTED LOOP.
SINGLE LINKED LIST (SLL)
Transcript presentasi:

LINK LIST Latifah Rifani

SEJARAH 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

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahkan saat dibutuhkan, tidak dialokasikan dengan tempat tertentu dari awal.

ILUSTRASI kepala null Gambar list dengan tiga buah elemen Secara logika, kepala atau first adalah pengait atau penunjuk awal elemen pertama dari sebuah list.

PENGERTIAN Merupakan sekumpulan elemen list yang bertipe sama. Elemen list mempunyai keterurutan tertentu, nilai satu elemen boleh muncul lebih dari satu kali. Setiap elemen mempunyai 2 bagian: Informasi elemen Alamat suksesornya

Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung dan dinamis. Linked List saling terhubung dengan bantuan variabel pointer. Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis.

Setiap node terdiri atas dua bagian Setiap node terdiri atas dua bagian. Bagian pertama berisi informasi data tersebut, Bagian kedua merupakan field, link, atau nextpointer. Link inilah yang menghubungkan satu elemen data ke elemen data lainnya, sehingga urutan elemen data tersebut membentuk suatu linear list.

Field link ini berisi alamat dari simpul berikutnya dalam list. Field link bernilai 0 bila link tersebut tidak menuding ke data (simpul) lainnya. Penuding ini disebut penuding nol.

ILUSTRASI NEXT ELEMEN NODE A B C LINK LIST

CONTOH Misalnya kita ingin membuat sebuah elemen data nilai mahasiswa yang terdiri dari NRP, nama, dan nilai, maka representasinya adalah sebagai berikut: NRP nama nilai next 94410 iffa A Penunjuk ke elemen berikutnya

type nilaiMatKul : < Bila elemen seperti diatas dibuat dalam bahasa algoritma, seperti berikut: type nilaiMatKul : < NRP : string, nama : string, nilai : string, > Elemen ditambah dengan pengait/penunjuk: type elemen : < elmt : nilaiMatKul, next : elemen

Deklarasi listnya sebagai berikut: type list : < first : elemen >

Penunjuk elemen di awal ini (first) digunakan untuk memegang elemen awal sebuah list agar dapat diakses satu per satu sampai elemen terakhir list. Sebuah struktur data yang dianggap sebagai list memiliki aturan pengaksesan. Pengaksesan dilakukan dari penunjuk elemen pertama (first) kemudian berjalan maju ke elemen kedua, ketiga dan seterusnya sampai elemen terakhir.

Penggunaan memori yang dinamik. KEUNTUNGAN LIST Penggunaan memori yang dinamik. Kita dapat mengatur penggunaan memori sehingga bisa lebih hemat. Kesederhaan pada proses insert dan delete elemen.

Alamat elemen pertama dari suatu list, dapat diacu oleh First(L). Nilai yang dibawanya dapat diacu dengan info(P)

JENIS LINK LIST Single Linked List dapat juga ditulis NULL Double Linked List 10 15 20 head 10 15 20 prev next head

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

15 20 10 data pointer 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 LINK LIST Single Link List dengan Head 10 15 20 head tail Single Link List dengan Head dan Tail

BEBERAPA OPERASI PADA LIST

MEMBUAT ELEMEN LINKED LIST Membuat suatu elemen linked list berarti memesan tempat di memori untuk menyimpan sebuah list.

MENGHAPUS ELEMEN LIST Menghapus elemen list berarti menghilangkan atau menghancurkan alokasi memori sebuah list yang telah ada di memori. Fungsi: agar data yang tidak diperlukan benar-benar terhapus di memori sehingga penggunaan memori dapat optimal karena data-data yang tidak diperlukan dihilangkan.

PENAMBAHAN ELEMEN DI POSISI AWAL Penambahan elemen di posisi awal adalah menambahkan data baru pada posisi awal, sehingga data baru tersebut akan menjadi awal. Ada 2 hal yang harus diperhatikan, yaitu : kondisi linked list sedang kosong, atau kondisi linked list sudah mempunyai elemen.

Kondisi Linked List Sedang Kosong Ketika linked list masih kosong, maka variable awal dan akhir akan diisi dengan variable baru.

head 10 head NULL 1. List masih kosong (head=NULL) 2. Masukkan data baru, misal 10 10 head

Kondisi Linked List Sudah Mempunyai Elemen. Proses penambahannya adalah dengan mengisikan field next milik elemen baru dengan posisi awal linked list, kemudian posisi awal berubah ke posisi baru.

10 15 head baru 15 10 baru head 15 10 head Masukkan data baru dari depan, misal 15 10 15 head baru 15 10 baru head 15 10 head

Penambahan Elemen Di Posisi Terakhir Penambahan di posisi akhir adalah proses penambahan data baru dimana data baru disimpan di posisi terakhir. Setelah proses penambahan selesai, maka variable akhir akan menunjuk ke data baru tersebut. Ada 2 hal yang harus diperhatikan yaitu : Kondisi penambahan akhir pada linked list yang masih kosong dan Kondisi penambahan akhir pada linked list yang sudah mempunyai elemen.

10 15 head baru 10 15 head bantu baru 10 15 head Masukkan data baru dari belakang, misal 15 10 15 head baru 10 15 head bantu baru 10 15 head

10 15 21 head baru 10 15 21 head bantu baru 10 15 21 head Masukkan data baru dari belakang, misal 21 10 15 21 head baru 10 15 21 head bantu baru 10 15 21 head

MENAMPILKAN SINGLE LINKED LIST DENGAN HEAD Penelusuran ini dilakukan dengan menggunakan suatu pointer bantu, karena pada prinsipnya pointer head yang menjadi tanda awal list tidak boleh berubah/berganti posisi. Penelusuran dilakukan terus sampai node terakhir ditemukan menunjuk ke nilai NULL. Jika tidak NULL, maka node bantu akan berpindah ke node selanjutnya dan membaca isi datanya dengan menggunakan field next sehingga dapat saling berkait. Jika head masih NULL berarti data masih kosong!.

Contoh: Langkah-langkah penelusuran adalah : ƒIsi variable p dengan awal. ƒSelama p tidak NULL, maka tampilkan info yang ada di elemen yang ditunjuk variable p, kemudian p dipindahkan ke elemen berikutnya.

PENGHAPUSAN DATA AWAL Penghapusan data di awal adalah proses menghapus elemen pertama (awal), sehingga variable awal akan berpindah ke elemen data berikutnya. Ada 3 kondisi yang perlu diperhatikan yaitu: kondisi linked list masih kosong kondisi linked list hanya memiliki 1 data, dan kondisi linked list yang memiliki data lebih dari 1 elemen.

Kondisi linked list masih kosong Pada kondisi ini proses penghapusan tidak bisa dilakukan. Kondisi linked list hanya memiliki 1 data Langkah yang dilakukan adalah menghapus data yang ada di posisi awal kemudian akhir dan awal di-NULL-kan.

Kondisi linked list memiliki data lebih dari 1 data: Alamat data awal diisikan ke suatu variabel pembantu (phapus). Setelah itu pindahkan awal ke data berikutnya. Setelah itu hapus/hancurkan data di posisi phapus.

Proses penghapusan data 10 dari depan 15 21 head 15 21 head

Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer. Sebelum data terdepan dihapus, head harus ditunjukkan ke node sesudahnya terlebih dahulu agar list tidak putus, sehingga node setelah head lama akan menjadi head baru (data terdepan yang baru).

PENGHAPUSAN DATA AKHIR Penghapusan data akhir adalah proses menghilangkan/menghapus data yang ada di posisi terakhir. Ada 3 kondisi yang harus diperhatikan ketika akan melakukan proses penghapusan data akhir yaitu: Kondisi linked list masih kosong, Kondisi linked list hanya berisi 1 data, dan Kondisi linked list berisi data lebih dari 1 buah.

10 15 21 34 head bantu hapus 10 15 21 34 head bantu 10 15 21 head Proses menghapus data 34 dari belakang 10 15 21 34 head bantu hapus 10 15 21 34 head bantu 10 15 21 head bantu

MENGHAPUS DATA DARI BELAKANG Membutuhkan pointer bantu dan hapus. Pointer hapus digunakan untuk menunjuk node yang akan dihapus, dan pointer bantu digunakan untuk menunjuk node sebelum node yang dihapus yang kemudian selanjutnya akan menjadi node terakhir. Pointer bantu akan digunakan untuk menunjuk ke nilai NULL. Pointer bantu akan selalu bergerak sampai sebelum node yang akan dihapus, baru kemudian pointer hapus diletakkan setelah pointer bantu. Setelah itu pointer hapus akan dihapus, pointe bantu akan menunjuk ke NULL.

Dibutuhkan dua buah variabel pointer: head dan tail Head akan selalu menunjuk pada node pertama, sedangkan tail akan selalu menunjuk pada node terakhir. 10 15 20 head tail

IMPLEMENTASI LIST MENGGUNAKAN JAVA

Java tidak memiliki pointer namun memiliki reference. Reference adalah penunjuk ke objek (fungsinya sama seperti pointer)

Contoh penggunaan reference: Data a = new Data(); Data b = a; /* b menunjuk ke a*/ Jika b di ubah, maka a juga akan berubah

Suatu kelas boleh merefer dirinya sendiri. Contoh: class ListElement { ELEMEN LIST Pada java, elemen list didefinisikan dengan kelas. Jadi elemen list adalah kelas. Suatu kelas boleh merefer dirinya sendiri. Contoh: class ListElement { String info; ListElement next; }