Struktur Data Linked List

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.
LINKED LIST.
CARA MEMBUAT SINGLE LINKED LIST DENGAN BORLAND C++
Pertemuan 2 STRUKTUR DATA LINKED LIST
LINKED LIST (List linier)
Mata Kuliah : Struktur Data Pertemuan : V
LINKED LIST Single Linked List.
LINKED LIST.
LINK LIST Latifah Rifani.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
SENARAI BERANTAI TUNGGAL
Single Linked List.
Queue.
STRUKTUR DATA (6) single linked list non circular
Single Linked List Yuliana Setiowati, S.Kom.
Algoritma & Struktur Data Linked List Evangs Mailoa.
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Linear Data Structures (Linked List). Node Link atau pointer data field.
Algoritma dan Struktur Data
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.
Algoritma dan Struktur Data
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
LINK LIST “Suatu cara menyimpan data dengan terstruktur sehingga programmer dapat secara otomatis menciptakan suatu tempat baru didalam memori komputer.
Rahmady Liyantanto liyantanto.wordpress.com S1 Teknik Informatika Universitas Trunojoyo Struktur Data.
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
MATAKULIAH : STRUKTUR DATA
SENARAI BERANTAI TUNGGAL
Double linked list non circular
STRUKTUR DATA (2) Single Linked List
STRUKTUR DATA Linked List Oleh : Yuli Praptomo PHS, S.Kom.
STRUKTUR DATA Linked List
Struktur Data Pointer Oleh Lutfi Budi Ilmawan
Single Linked List.
STRUKTUR DATA QUIZ.
Algoritma dan Struktur Data
Linked List Oleh: Tim Struktur Data IF - UNIKOM.
Defri Kurniawan DOUBLE LINKED LIST Defri Kurniawan
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 Oleh: Tim Struktur Data IF - UNIKOM.
Doubel Linked List.
Tim struktur data IF UNIKOM
Single Linked List Circular (SLLC)
LINKED LIST GANDA Linked list ganda (doubly linked list) adalah linked list yang setiap simpul-nya (node) memiliki dua buah pointer, masing-masing berada.
STRUKTUR DATA (8.2) double linked list circular
Double Linked List.
STRUKTUR DATA LINKED LIST
Defri Kurniawan VARIASI LIST Defri Kurniawan
LINKED LIST MELINGKAR Linked List melingkar (circular) adalah linked list linier biasa dimana pointer pada node terakhir diarahkan kembali ke node pertama.
Tim struktur data IF UNIKOM
Variable Static & Linked List
Algoritma dan Struktur Data
SINGLE LINKED LIST (SLL)
Transcript presentasi:

Struktur Data Linked List Universitas Muslim Indonesia Oleh Lutfi Budi Ilmawan

Pendahuluan Linked list merupakan struktur data yang terdiri dari sekelompok node yang berantai dengan urutan tertentu. Node (simpul) merupakan elemen yang terdapat pada sebuah linked list yang terdiri dari: data dan link. Link merupakan field pada linked list yang menyimpan informasi alamat dari node lainnya. Data merupakan field pada linked list yang menyimpan data atau item. Link pada elemen terakhir bernilai NULL, yang menunjukkan akhir dari suatu linked list yang disebut tail. Elemen awal diakses oleh head.

Keuntungan Linked List memiliki struktur data dinamis. Operasi penyisipan dan penghapusan node mudah diimplementasikan. Struktur data linier seperti stack dan queue yang mudah dijalankan dengan linked list. Data dapat berkembang secara real time tanpa terjadinya memory overhead.

Kekurangan Memiliki kecenderungan untuk menggunakan lebih banyak memori karena pointer yang membutuhkan ruang penyimpanan ekstra. Terutama pada double linked list, dibutuhkan memori tambahan untuk ruang yang dibutuhkan oleh next pointer dan previous pointer. Node dalam linked list harus dibaca berurutan dari awal secara sekuensial. Node disimpan tidak secara berdekatan, sehingga dapat meningkatkan waktu yang dibutuhkan untuk mengakses elemennya.

Jenis Linked List Single linked list, terdiri dari dua field yakni data dan next pointer. Double linked list, terdiri dari tiga field yakni data, next pointer, dan previous pointer. Multiple linked list, terdiri dari 2 atau lebih link field. Circular Linked list, linked list yang tail-nya menunjuk ke head.

SINGLE LINKED LIST Contoh 1 2 3 head next next next NULL TAIL

Deklarasi pada c++ SINGLE LINKED LIST struct node{ int data; node *next; }; node *n, *head, *tail, *p_akses; Penjelasan: Node dibuat dengan menggunakan struct/record yang berisi dua buah field (data dan *next). data digunakan untuk menyimpan nilai (misal integer). *next digunakan untuk menyimpan alamat (pointer value) dari node lain. *n digunakan sebagai variabel pointer yang menunjuk pada node baru; *head digunakan sebagai variabel pointer yang menunjuk pada node awal pada linked list. *tail digunakan sebagai variabel pointer yang akan memberikan nilai NULL pada next pointer sebagai node akhir *p_akses digunakan sebagai variabel pointer untuk pengaksesan data. Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Operasi dalam Single Linked List Pembentukan Node Awal Penambahan Node Penghapusan Node Pengaksesan Node Pencarian Data Salah satu analogi yang dapat dikemukakan di sini adalah tumpukan piring atau barang lain. Pada saat kita hendak menumpuk piring-piring tersebut tentulah yang kita lakukan adalah meletakkan piring pertama pada tempatnya, selanjutnya meletakkan piring kedua di atas piring pertama dan demikian seterusnya. Pada saat kita hendak mengambil satu piring dari tumpukan tersebut, tentu yang diambil adalah piring teratas (yang terakhir kali ditaruh), bukan yang terbawah (yang pertama kali diletakkan).

Pembentukan Node Awal Algoritma: n menunjuk pada node baru SINGLE LINKED LIST Pembentukan Node Awal Algoritma: n menunjuk pada node baru n.data diberikan nilai. tail = n head = n

Penambahan Node Penambahan di awal linked list. SINGLE LINKED LIST Penambahan Node Penambahan di awal linked list. Penambahan di akhir linked list. Penambahan di tengah linked list.

Penambahan di Akhir Algoritma: n menunjuk node baru SINGLE LINKED LIST Penambahan di Akhir Algoritma: n menunjuk node baru n.data diberikan nilai. tail.next = n tail = n

Penambahan di Awal Algoritma: n menunjuk node baru SINGLE LINKED LIST Penambahan di Awal Algoritma: n menunjuk node baru n.data diberikan nilai n.next = head head = n

Penambahan di Tengah Algoritma: p_akses = head SINGLE LINKED LIST Penambahan di Tengah Algoritma: p_akses = head 2. if (p_akses.data  data_setelah){ do { p_akses = p_akses.next } while(p_akses.data  data_setelah) n menunjuk pada node baru n.data diberikan nilai n.next = p_akses.next p_akses.next = n

Penghapusan Node Penghapusan di awal Penghapusan di akhir SINGLE LINKED LIST Penghapusan Node Penghapusan di awal Penghapusan di akhir Penghapusan di tengah

Penghapusan di Awal Algoritma: p_akses = head head = head.next SINGLE LINKED LIST Penghapusan di Awal Algoritma: p_akses = head head = head.next hapus node pada lokasi memori yang ditunjuk p_akses.

Penghapusan di Akhir Algoritma: p_akses = head SINGLE LINKED LIST Penghapusan di Akhir Algoritma: p_akses = head while (p_akses.next  tail){ p_akses = p_akses.next; } tail = p_akses hapus node pada lokasi memori yang ditunjuk p_akses.next

Penghapusan di Tengah Algoritma: SINGLE LINKED LIST Penghapusan di Tengah Algoritma: buat variabel pointer dengan nama *temp=NULL. p_akses = head while (p_akses.data  x){ temp = p_akses p_akses = p_akses.next } temp.next = p_akses.next hapus node pada lokasi memori yang ditunjuk p_akses.

Pengaksesan Data Algoritma: p_akses = head while (p_akses  NULL){ SINGLE LINKED LIST Pengaksesan Data Algoritma: p_akses = head while (p_akses  NULL){ print (p_akses.data) p_akses = p_akses.next }

Double Linked List Terdiri dari tiga field yakni data, next pointer, dan previous pointer. Double linked list dibuat agar data pada sebuah linked list dapat diakses secara mundur. data1 data2 data3 NULL head next next next NULL prev prev prev

Operasi dalam Double Linked List Pembentukan node awal Penambahan node Penghapusan node Pengaksesan node dari depan Pengaksesan node dari belakang

Deklarasi pada c++ DOUBLE LINKED LIST struct node{ int data; node *next; node *prev; }; node *n, *head, *tail, *p_akses; Penjelasan: Node dibuat dengan menggunakan struct/record yang berisi tiga buah field (data, *next, dan *prev). data digunakan untuk menyimpan nilai (misal integer). *next digunakan untuk menyimpan alamat (pointer value) dari node setelahnya. *prev digunakan untuk menyimpan alamat (pointer value) dari node sebelumnya. *n digunakan sebagai variabel pointer yang menunjuk pada node baru; *head digunakan sebagai variabel pointer yang menunjuk pada node awal pada linked list. *tail digunakan sebagai variabel pointer yang akan memberikan nilai NULL pada next pointer sebagai node akhir *p_akses digunakan sebagai variabel pointer untuk pengaksesan data.

Operasi dalam Double Linked List Pembentukan node awal Penambahan node Penghapusan node Pengaksesan node dari depan Pengaksesan node dari belakang

Pembentukan Node Awal Algoritma: n menunjuk pada node baru DOUBLE LINKED LIST Pembentukan Node Awal Algoritma: n menunjuk pada node baru n.data diberikan nilai n.prev = NULL head = n tail = n

Penambahan di Akhir Algoritma: n menunjuk pada node baru DOUBLE LINKED LIST Penambahan di Akhir Algoritma: n menunjuk pada node baru n.data diberikan nilai n.prev = tail tail.next = n tail = n

Penambahan di Awal Algoritma: n menunjuk pada node baru DOUBLE LINKED LIST Penambahan di Awal Algoritma: n menunjuk pada node baru n.data diberikan nilai n.next = head head.prev = n n.prev = NULL head = n

Penambahan di Tengah Algoritma: p_akses = head DOUBLE LINKED LIST Penambahan di Tengah Algoritma: p_akses = head 2. while(p_akses.data  data_setelah) { p_akses = p_akses.next } n menunjuk pada node baru n.data diberikan nilai n.next = p_akses.next p_akses.next = n n.prev = p_akses p_akses = n.next p_akses.prev = n

Pengaksesan Data dari Depan DOUBLE LINKED LIST Pengaksesan Data dari Depan Algoritma: p_akses = head while (p_akses  NULL){ print (p_akses.data) p_akses = p_akses.next }

Pengaksesan dari Belakang DOUBLE LINKED LIST Pengaksesan dari Belakang Algoritma: p_akses = tail while (p_akses  NULL){ print (p_akses.data) p_akses = p_akses.prev }

Tugas Buat algoritma operasi untuk double linked list: Penghapusan node di akhir Penghapusan node di awal Penghapusan node di tengah Tugas dikirim ke : luthfy13@yahoo.com Dengan subject : SD.[Kelas].[Stambuk] Deadline : Senin, 4 Mei 2015