Double Linked List Double Linked List Sama seperti

  • Slides: 24
Download presentation
Double Linked List

Double Linked List

Double Linked List • Sama seperti single linked list, double linked list mempunyai struktur

Double Linked List • Sama seperti single linked list, double linked list mempunyai struktur sequential. • Double Linked List terdiri dari dua reference yang menunjuk ke node selanjutnya (next node) dan node sebelumnya (previous node) • Untuk bergerak maju dan mundur pada double linked list menggunakan link next dan prev pada node. © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Double Linked List • Double Linked List mempunyai reference front untuk menandai awal node

Double Linked List • Double Linked List mempunyai reference front untuk menandai awal node dan reference back untuk menandai akhir list

Pembacaan pada Double Linked List • Double Linked List dapat dibaca melalui dua arah.

Pembacaan pada Double Linked List • Double Linked List dapat dibaca melalui dua arah. – Pembacaan maju (forward scan) yaitu membaca double linked list dimulai dari reference front dan berakhir pada reference back. – Pembacaan mundur (backward scan) yaitu membaca double linked list dimulai dari reference back dan berakhir pada reference front. © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Class DNode • Node pada Double Linked List direpresentasikan dengan class DNode • Kumpulan

Class DNode • Node pada Double Linked List direpresentasikan dengan class DNode • Kumpulan object DNode membentuk sebuah list disebut double linked list © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Class DNode • Object DNode mempunyai tiga variabel: • node. Value untuk menyimpan nilai

Class DNode • Object DNode mempunyai tiga variabel: • node. Value untuk menyimpan nilai • prev untuk menandai node sebelumnya • Next untuk menandai node sesudahnya. © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Constructor Class DNode • Class mempunyai dua constructor. – Default constructor membuat object DNode

Constructor Class DNode • Class mempunyai dua constructor. – Default constructor membuat object DNode dengan node. Value bernilai null, sedangkan prev dan next diset dengan nilai this (link yang menunjuk ke dirinya sendiri). – Constructor dengan argumen untuk memberikan nilai pada node. Value, sedangkan untuk variabel prev dan next diset dengan nilai this.

Class DNode public class DNode<T> { public T node. Value; public DNode<T> prev; public

Class DNode public class DNode<T> { public T node. Value; public DNode<T> prev; public DNode<T> next; // data value of the node // previous node in the list // next node in the list // default constructor; creates an object with // the value set to null and whose references // point to the node itself public DNode() { node. Value = null; // the next node is the current node next = this; // the previous node is the current node prev = this; } © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Class DNode // creates object whose value is item and // whose references point

Class DNode // creates object whose value is item and // whose references point to the node itself public DNode(T item) { node. Value = item; // the next node is the current node next = this; // the previous node is the current node prev = this; } } © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Membuat Node p • DNode<String> p=new DNode<String>(); p prev null next

Membuat Node p • DNode<String> p=new DNode<String>(); p prev null next

Membuat Node q • DNode<String> q=new DNode<String>(“merah”); q prev merah next

Membuat Node q • DNode<String> q=new DNode<String>(“merah”); q prev merah next

Menyisipkan Node di Depan List front prev • • biru next merah back next

Menyisipkan Node di Depan List front prev • • biru next merah back next new. Node DNode<String> new. Node = new DNode<String>(“biru”); new. Node. next = front ; front. prev = new. Node ; front = new. Node ; prev hijau next

Menyisipkan Node di Belakang List front prev merah back next prev hijau next new.

Menyisipkan Node di Belakang List front prev merah back next prev hijau next new. Node • • DNode<String> new. Node = new DNode<String>(“biru”); back. next = new. Node ; new. Node. prev = back ; back = new. Node prev biru next

Menyisipkan Node di Double Linked List • Untuk menyisipkan Node diperlukan dua variabel reference

Menyisipkan Node di Double Linked List • Untuk menyisipkan Node diperlukan dua variabel reference yaitu: – curr : menandai node saat ini – prev. Node : menandai node sebelum curr • Menyisipkan node dilakukan sebelum curr dan sesudah prev. Node. © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Menyisipkan Node di Double Linked List // declare the DNode reference variables new. Node

Menyisipkan Node di Double Linked List // declare the DNode reference variables new. Node and prev. Node DNode<T> new. Node, prev. Node; // create a new node and assign prev. Node to reference the // predecessor of curr new. Node = new DNode<T>(item); prev. Node = curr. prev; // update reference fields in new. Node. prev = prev. Node; // statement 1 new. Node. next = curr; // statement 2 // update curr and its predecessor to point at new. Node prev. Node. next = new. Node; // statement 3 curr. prev = new. Node; // statement 4 © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Menyisipkan Node di Double Linked List © 2005 Pearson Education, Inc. , Upper Saddle

Menyisipkan Node di Double Linked List © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Menyisipkan Node di Double Linked List front prev new. Node • • prev. Node

Menyisipkan Node di Double Linked List front prev new. Node • • prev. Node kuning next prev biru back curr merah prev next new. Node. prev = prev. Node; new. Node. next = curr; prev. Node. next = new. Node; curr. prev = new. Node; // statement 1 // statement 2 // statement 3 // statement 4 prev hijau next

Menghapus Node di Depan List front prev biru back next prev merah • Front

Menghapus Node di Depan List front prev biru back next prev merah • Front = front. next ; • Front. prev. next = null ; • Front. prev = this ; next prev hijau next

Menghapus Node di Belakang List front prev biru back next prev merah • Back

Menghapus Node di Belakang List front prev biru back next prev merah • Back = back. prev ; • back. next. prev = null ; • Back. next = this ; next prev hijau next

Menghapus Node Sesuai Target • Untuk menghapus Node diperlukan dua variabel reference yaitu: –

Menghapus Node Sesuai Target • Untuk menghapus Node diperlukan dua variabel reference yaitu: – curr : menandai node yang akan di hapus – prev. Node : menandai node sebelum curr • Menghapus node dilakukan di curr.

Deleting a Node in a Doubly Linked List (concluded) DNode<T> prev. Node = curr.

Deleting a Node in a Doubly Linked List (concluded) DNode<T> prev. Node = curr. prev, next. Node = curr. next; // update the reference variables in the adjacent nodes. prev. Node. next = next. Node; // statement 1 next. Node. prev = prev. Node; // statement 2 © 2005 Pearson Education, Inc. , Upper Saddle River, NJ. All rights reserved.

Menghapus Node Sesuai Target prev. Node next. Node front prev merah back curr next

Menghapus Node Sesuai Target prev. Node next. Node front prev merah back curr next prev kuning next prev hijau next prev biru • DNode<T> prev. Node = curr. prev, next. Node = curr. next; • prev. Node. next = next. Node; // statement 1 • next. Node. prev = prev. Node; // statement 2 next

Membaca Maju Double Linked List curr front prev merah next prev DNode<T> curr =

Membaca Maju Double Linked List curr front prev merah next prev DNode<T> curr = front ; String str = "[" + curr. node. Value; while(curr. next != this) { curr = curr. next; str += ", " + curr. node. Value; } str += "]"; back kuning next prev hijau next [merah , kuning , hijau]

Membaca Mundur Double Linked List curr front prev merah next prev DNode<T> curr =

Membaca Mundur Double Linked List curr front prev merah next prev DNode<T> curr = back ; String str = "[" + curr. node. Value; while(curr. prev != this) { curr = curr. prev; str += ", " + curr. node. Value; } str += "]"; back kuning next prev hijau next [hijau , kuning , merah]