LINKED LIST.

Slides:



Advertisements
Presentasi serupa
Menempatkan Pointer Q 6.3 & 7.3 NESTED LOOP.
Advertisements

Tugas: Perangkat Keras Komputer Versi:1.0.0 Materi: Installing Windows 98 Penyaji: Zulkarnaen NS 1.

Double Linked List.
Binary Trees adalah parent
Single linked list.
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
LINKED LIST.
Linked List BEBERAPA CONTOH SOAL 6.3 & 7.3 NESTED LOOP.
WORKSHOP INTERNAL SIM BOK
Mata Kuliah : Struktur Data Pertemuan : V
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
LINK LIST Latifah Rifani.
Algoritma dan Struktur Data Daniel Riano Kaparang.
Rabu 23 Maret 2011Matematika Teknik 2 Pu Barisan Barisan Tak Hingga Kekonvergenan barisan tak hingga Sifat – sifat barisan Barisan Monoton.
SENARAI BERANTAI TUNGGAL
Single Linked List.
Implementasi Binary Tree
Lecture 9 Single Linked List Sandy Ardianto & Erick Pranata © Sekolah Tinggi Teknik Surabaya 1.
Queue.
KONTROL ALUR EKSEKUSI PROGRAM
INHERITANCE.
Quiz struktur data Genap 2013.
STACK.
Soal-Soal Latihan Mandiri
Queue.
STRUKTUR DATA (6) single linked list non circular
Single Linked List Yuliana Setiowati, S.Kom.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
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.
Linear Data Structures (Queue)
Pertemuan ketujuh Struktur data st3telkom.ac.id
Linear List.
Struktur Data List Linear : Linked List (Single Linkedlist)
Pemrograman Berorientasi Obyek Lanjut (IT251)
LINKED LIST.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Struktur Data (Data Structure) – IS 2313
Pertemuan : Algoritma & Struktur Data
Algoritma dan 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.
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.
LINKED LIST by Yohana N.
Single Linked List.
12. Doubly Linear Linked List
Algoritma dan Struktur Data
STACK (Tumpukan).
11. Singly Circular Linked List
Linked List INSERT KIRI 6.3 & 7.3 NESTED LOOP.
Doubel Linked List.
Algoritme dan Stuktur Data
STRUKTUR DATA (7) single linked list circular
Doubel Linked List.
Single Linked List Circular (SLLC)
LINKED LIST by Yohana N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked-lis...
STRUKTUR DATA (8.2) double linked list circular
Double Linked List.
SINGLE LINKED LIST (SLL)
Transcript presentasi:

LINKED LIST

Double Linked List Double : artinya field pointer-nya dua buah dan dua arah, yang menunjuk ke node sebelum dan sesudahnya. Berguna bila perlu melakukan pembacaan linkedlist dari dua arah. Double linked list memiliki 2 buah pointer yaitu pointer next dan prev. Pointer next : mengarah ke node belakang (tail). Pointer prev : mengarah ke node depan (head).

Ilustrasi Node “Double” prev DATA next Ketika masih ada satu node maka kedua pointer (next dan prev) akan menunjuk ke NULL) Double linked list dapat diakses dari dua arah : Dari depan ke belakang (head ke tail) Dari belakang ke depan (tail ke head)

Double Linked List Ketika double linked list memiliki banyak node maka node yang paling depan pointer prev-nya menunjuk ke NULL. Sedangkan node yang paling belakang pointer next-nya yang menunjuk ke NULL. a b c d e null firstNode lastNode

Pointer Head dan Tail Sama seperti single linked list, pada double linked dibutuhkan pointer bantu yaitu head dan tail. Head : menunjuk pada node yang paling depan. Tail : menunjuk pada node yang paling belakang.

Double Linked List Contoh ilustrasi double linked list yang memiliki 4 node : previous next

“Double” Representation class Node2P { int data; // data Node2P next; // pointer next Node2P prev; // pointer prev } Penjelasan: Pembuatan class bernama Node2P, yang berisi variabel data bertipe Object dan 2 variabel pointer bertipe Node2P yaitu : next dan prev. Field data : digunakan untuk menyimpan data/nilai pada linked list. Field pointer : digunakan untuk menyimpan alamat node berikutnya. Ilustrasi : next data prev

Class Node Constructor 1 null public class Node2P { int data; Node2P next; Node2P previous; Node2P() {} Node2P(int theData) { data = theData;} Node2P(int theData, Node2P thePrevious, Node2P theNext) { data= theData; previous = thePrevious; next = theNext; } Constructor 2 null data Constructor 3 next data prev

Alokasi Simpul Node2P baru = new Node2P(10);

Operasi Linked List inisialisasi isEmpty size Penambahan Penghapusan Penyisipan Pencarian Pengaksesan

(1) Inisialisasi Awal Pointer Head & Tail Node2P head = null; Node2P tail= null; head tail NULL

(2)isEmpty Digunakan untuk mengetahui linked dalam kondisi kosong. Kondisi kosong : jika size = 0 atau jika head=tail=null. boolean isEmpty() { return size==0; }

(3) size Digunakan untuk mengetahui banyak node pada linked list. Size akan bertambah 1 setiap ada node baru yang ditambahkan pada linked list. Size akan berkurang 1 setiap ada penghapusan node. int size() { return size; }

(4) Penambahan Dibedakan menjadi : Penambahan dari depan Penambahan dari belakang Penambahan setelah node tertentu Penambahan sebelum node tertentu

Membentuk Simpul Awal Jika kondisi awal linked list kosong, maka head dan tail sama-sama menunjuk node baru. head = tail= Baru

Penambahan dari Depan Jika linked list terdapat node, maka : Penambahan node baru diletakkan di depan node yang ditunjuk oleh head. Pointer prev dari node depan diarahkan ke node baru. Terjadi pergeseran pointer head kearah node baru.

Penambahan dari Depan void addFirst(Node2P input){ if (isEmpty()){ head=input; tail=input; } else { input.next = head; head.previous = input; head = input; } size++;

Insert First 1. Baru.next = head

Insert First 2. head.prev = Baru

Insert First 3. head = baru

Penambahan dari Belakang Jika linked list terdapat node, maka : Penambahan node baru diletakkan di belakang node yang ditunjuk oleh tail. Pointer next dari node belakang diarahkan ke node baru. Terjadi pergeseran pointer tail kearah node baru.

Penambahan dari Belakang void addLast(Node2P input){ if (isEmpty()){ head = input; tail = input; } else { input.previous = tail; tail.next = input; } size++;

Insert Last Kondisi awal linked list : Terdapat 2 node

Insert Last 1. Baru.prev = tail

Insert Last 2. tail.next = Baru

Insert Last 3. tail= Baru

Penambahan Setelah Node x Penambahan node baru dilakukan dibelakang node x (node tertentu). Node x adalah node yang memiliki data yang sama dengan key. Jika tidak ditemukan node yang dimaksud maka penambahan tidak terjadi.

Penambahan setelah Node x void insertAfter(int key,Node2P input){ Node2P temp = head; do{ if(temp.data==key){ input.previous = temp; input.next = temp.next; temp.next.previous = input; temp.next = input; size++; System.out.println("Insert data is succeed."); break; } temp = temp.next; }while (temp!=null);

Insert After Node x Kondisi awal linked list : Terdapat 3 node pada linked list misalkan key = 10

Insert After Node x Dibutuhkan pointer bantu untuk mencari node x. Misalkan pointer bantu tersebut adalah after. 1. Node after = head; Pointer after akan bergeser mencari node yang sesuai.

Insert After Node x 2. Baru.prev = after

Insert After Node x 3. Baru.next = after.next

Insert After Node x 4. after.next.prev = Baru

Insert After Node x 5. after.next = Baru

Insert After Node x Hasil akhir :

Penambahan Sebelum Node x Penambahan node baru dilakukan didepan node x (node tertentu). Node x adalah node yang memiliki data yang sama dengan key. Jika tidak ditemukan node yang dimaksud maka penambahan tidak terjadi.

Penambahan sebelum Node tertentu void insertBefore(Object key,Node2P input){ Node2P temp = head; while (temp != null){ if (temp.data == key) { if(temp == head) this.addFirst(input); System.out.println("Insert data is succeed."); size++; break; } else input.previous = temp.previous; input.next = temp; temp.previous.next = input; temp.previous = input; temp = temp.next;

Insert Before Node x Kondisi awal linked list : Terdapat 4 node pada linked list misalkan key = 5

Insert Before Node x Node before = head; pointer before mencari node yang sesuai.

Insert Before Node x 2. Baru.prev = before.prev

Insert Before Node x 3. Baru.next = before

Insert Before Node x 4. before.prev.next = Baru

Insert Before Node x 5. before.prev = Baru

Insert Before Node x Hasil akhir :

(5) Penghapusan Dibedakan menjadi : Hapus node depan Hapus node belakang Hapus node tertentu

Penghapusan Jika linked list dalam keadaan kosong maka tidak dapat dilakukan penghapusan. Jika pada linked list hanya terdapat 1 node, maka head dan tail menunjuk ke NULL.

Hapus Node Depan Penghapusan dilakukan pada node paling depan, yaitu node yang ditunjuk oleh head. Terjadi pergeseran head ke belakang.

Hapus node depan void removeFirst(){ Node2P temp = head; if (!isEmpty()){ if (head == tail) head = tail = null; else { head.next.previous = null; head = temp.next; } size--; } System.out.println("Data is empty!");

Delete First kondisi awal linked list: Terdiri dari 5 node

Delete First 1. Node hapus = head;

Delete First 2. head.next.prev = null

Delete First 3. head = hapus.next

Delete First Node 8 sudah terhapus

Delete First Hasil akhir :

Hapus Node Belakang Penghapusan dilakukan pada node paling belakang, yaitu node yang ditunjuk oleh tail. Terjadi pergeseran tail ke depan.

Hapus node belakang void removeLast(){ Node2P temp = tail; if (!isEmpty()){ if (tail == head){ head = tail = null; } else { tail.previous.next = null; tail=temp.previous; } size--; else System.out.println("Data is empty!");

Delete Last Kondisi awal linked list : Linked list terdiri dari 4 node

Delete Last 1. Node hapus=tail;

Delete Last 2. tail.prev.next = null

Delete Last 3. tail= hapus.prev

Delete Last Node 6 sudah terhapus

Delete Last Hasil akhir :

Hapus Node x Penghapusan dilakukan pada node x (node tertentu). Node x adalah node yang memiliki data sama dengan key. Jika tidak ditemukan node yang sesuai maka penghapusan tidak dapat dilakukan.

Hapus node tertentu void remove(int key){ Node2P temp = head; if (!isEmpty()){ while (temp != null){ if (temp.data == key){ if (temp == head){ this.removeFirst(); size--; break; } else { if(temp.next == null){ tail=temp.previous; tail.next=null; else{ temp.previous.next = temp.next; temp.next.previous = temp.previous; temp = temp.next; System.out.println("Data is empty!");

Delete Node x Kondisi awal linked list : Linked list memiliki 3 node. Misalkan key = 3

Delete Node x Node hapus=head; hapus adalah pointer bantu yang akan mencari node yang dimaksud (node x).

Delete Node x 2. hapus.prev.next = hapus.next;

Delete Node x 3. hapus.next.prev = hapus.prev;

Delete Node x Node 3 sudah terhapus