List: Pokok Bahasan dan TIK

dokumen-dokumen yang mirip
KUM 3 IMPLEMENTASI LIST

DIG1G3 Implementasi Struktur Data

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 1)

Struktur Data dan Algoritma

Gambar 1. Single Linked List

Lecture Notes On Algorithms and Data Structures. Oleh Thompson Susabda Ngoen

Single Linked List. Single Linked List

Gambar 1. Single Linked List

Gambar 1. Single Linked List

Gambar 1. Single Linked List

Algoritma dan Struktur Data. Pertemuan 7 Linked List

Linked List dan Implementasinya dalam Bahasa Java

1. Traversing Untuk algoritma traversing sama seperti pada single Link List

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA BUBBLE SORT, SELECTION SORT, INSERTION SORT

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA STACK

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA QUEUE

Algoritma dan Struktur Data. Queue

MODUL PRAKTIKUM STRUKTUR DATA DAN ALGORITMA LINKED LIST (BAGIAN 2)

Ujian Tengah Semester Struktur Data dan Algoritma Fakultas Ilmu Komputer, Universitas Indonesia 9 November 2006

MODUL 6 SINGLE & DOUBLE LINKED LIST

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

Masukan Judul... Infotype àsebuah tipe terdefinisi yang menyimpan informasi sebuah elemen list

DOUBLY LINKED LIST PROGRAM : DOUBLY LINKED LIST (TAMBAH SIMPUL DI BELAKANG)

Algoritma Pemrograman & Struktur Data

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

Pemrograman Berorientasi. Array dan Collections

Algoritma Pemrograman [BS204]

ALGORITMA DAN STRUKTUR DATA

LINKED LIST. TUJUAN UMUM Memahami konsep linked list TUJUAN KHUSUS

05. Double Linked List

Algoritma dan Struktur Data. Ramos Somya

2. Mahasiswa dapat membuat dan menggunakan array dan linked list dalam suatu kasus.

Algoritma dan Struktur Data. Linked List

MODUL III ARRAYLIST TUGAS PENDAHULUAN

QUEUE (ANTREAN) Operasi Antrean : FIFO (First In First Out) Elemen yang pertama masuk merupakan elemen yang pertama keluar.

SORTING (BAGIAN II) Proses kelima

Struktur Data dan Algoritma

Algoritma dan Struktur Data. Ramos Somya, S.Kom., M.Cs.

Gambar 17.1Representasi Sebuah Node di Double Linked List. Gambar 17.2 Double Linked List

BAB IV Antrian(Queue)

PRAKTIKUM STRUKTUR DATA QUEUE. SULIDAR FITRI, M.Sc

Everybody in this country should learn how to program a computer because it teaches you how to think. Steve Jobs

Data structure :Metode LINK LIST. Kusnawi, S.Kom, M.Eng STMIK AMIKOM Yogyakarta

BAB IX LINKED LIST (SENARAI BERANTAI)

Review : Sifat Implementasi Linear List dengan Array

PRAKTIKUM ALGORITMA DAN STRUKTUR DATA MODUL KE-2 STACK DAN QUEUE

Stack. Gambar 1.1 Stack

DOUBLE LINKED LIST. Danang Wahyu Utomo Danang Wahyu Utomo, M.Kom, M.CS

Outline STRUKTUR DATA. VII. Sorting

DIG1G3 Implementasi Struktur Data

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 29 Juni 2015

Single Linked List (1)

KONSEP POINTER DAN LINKED LIST

KERUGIAN DAN KEUNTUNGAN LINKED LIST

IKI 20100: Struktur Data & Algoritma

03/04/2018. Collection set List Map. Pemrograman Berorientasi Object

Analisa dan Perancangan Algoritma. Ahmad Sabri, Dr Sesi 1: 9 Mei 2016

Praktikum Algoritma dan Struktur Data 2010

Senarai berantai. linked list. Pertemuan keenam Struktur data st3telkom.ac.id. by : tenia wahyuningrum & Sisilia Thya Safitri

Manage Sort STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 4 : 30 Juni 2015

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

A. TUJUAN PEMBELAJARAN 1. Memahami konsep dan operasi pada Stack. 2. Mampu mengimplementasikan struktur data Stack pada array dan List.

STRUKTUR DATA (2) Single Linked List

Binary Tree. Binary Tree dapat digambarkan berdasarkan kondisinya, sebagai berikut: Pointer ke akar (root) dari tree

STL DLL STRUKTUR DATA. JULIO ADISANTOSO Departemen Ilmu Komputer IPB. Pertemuan 3 : 27 Juni 2016

Algoritma & Struktur Data. Array. Oleh : Nur Hayatin, M.Kom

UJIAN AKHIR SEMESTER GANJIL 2005/2006 ALGORITMA & STRUKTUR DATA / CS2014

Politeknik Elektronika Negeri Surabaya

03 LINKED LIST. Slide 0 voice. Slide 1 voice. Slide 2 voice. Thompson Susabda Ngoen 1 P a g e

IX. Implementasi ADT : Stacks & Queues. Operasi dasar Contoh kegunaan Implementasi Array-based dan linked list-based

Lab. Teknik Informatika Struktur Data 1

Praktikum Algoritma dan Struktur Data

TREE ALGORITMA & STRUKTUR DATA. Materi ASD Fakultas Teknik Elektro & Komputer UKSW ( Download Dari :

BAB II Senarai Berantai (Linked List)

STRUKTUR DATA. Literatur

Struktur Data & Algoritme (Data Structures & Algorithms)

Pertemuan 7. REVIEW dan QUIS

Politeknik Elektronika Negeri Surabaya

Jika Anda ingin bisa/sukses dalam kuliah SDA ini, rajinlah mengimplementasikan ADT dan mengerjakan soal-soal yang diberikan.

13/12/2013. Binary Tree. Contoh Tree

KUM 5 IMPLEMENTASI QUEUE

LAPORAN PRAKTIKUM IX. Oleh:

Grouping Object. Viska Mutiawani, M.Sc

PENGENALAN List merupakan sebuah pemikiran/konsep struktur data yang sangat dasar pada pemrograman agar lebih fleksibel. Setiap elemen akan ditambahka

SENARAI BERANTAI (LINK LIST)

Studi Digital Tree dan Aplikasinya pada Kamus

Collections. Collections Framework

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

Pemrograman Berbasis Objek. Collections. Politeknik Elektronika Negeri Surabaya

Struktur Data & Algoritma

BAB IV HASIL PENELITIAN DAN PENERAPAN

Algoritma Dan Struktur Data II

Algoritma Pemrograman & Struktur Data

Sorting. Struktur Data dan Algoritma. Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) Fasilkom UI

A. TUJUAN PEMBELAJARAN 1. Memahami konsep Class LinkedList di Collection 2. Memahami penggunaan method-method pada Class LinkedList.

BAB VIII Pencarian(Searching)

Pemrograman Berorientasi Obyek Lanjut (IT251) Ramos Somya, S.Kom., M.Cs.

04. Single Linked List

: Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Linked List. Single Linked List

Transkripsi:

LIST B U D I S

List: Pokok Bahasan dan TIK Pokok Bahasan Definisi list, TDA list, implementasi list dengan array, linked list dan doubly linked list Tujuan Instruksional Khusus Mahasiswa mampu mengembangkan beberapa algoritma untuk memanipulasi beberapa elemen list (berbasis array, linked list dan doubly linked list) serta dapat menjelaskan efisiensi algoritmanya

Lists List adalah suatu barisan berhingga dan terurut dari suatu item data yang disebut elemen Terurut: setiap elemen mempunyai posisi tertentu dalam list, sehingga terdapat elemen pertama, kedua dan seterusnya Notation: <a 0, a 1,, a n-1 > 3

Elemen List Setiap elemen mempunyai tipe data Operasi-operasi yang didefinisikan sebagai bagian dari TDA list tidak tergantung pada tipe data elemen. Sebagai contoh, TDA list dapat digunakan untuk list integer, list karakter, list mahasiswa, list elemen polinomial dan sebagainya.

List Sebuah list dikatakan kosong (empty) jika tidak memuat elemen. Jumlah elemen yang saat ini disimpan disebut panjang (length) list. Elemen awal atau pertama disebut kepala (head) dan elemen terakhir (akhir list) disebut ekor/akhir (tail). Berdasarkan keterhubungan antara nilai elemen dan posisi, list digolongkan menjadi dua macam, yaitu list terurut (ordered list) dan list tak-terurut (unordered list). Pada list terurut, elemen-elemen ditempatkan pada suatu urutan nilai tertentu (naik/turun), sehingga ada keterkaitan antara nilai dan posisi. Sedangkan pada list tak-terurut, tidak ada keterkaitan antara nilai dan posisi.

List: operasi2 menyisipkan dan menghapus elemen pada posisi saat ini (posisi curr) mengakses nilai elemen pada posisi tertentu untuk membaca dan mengubah menghapus elemen2 list mengakses elemen sesudah dan sebelum dari elemen yang ditunjuk oleh (pada posisi) curr mengupdate nilai elemen dan lain-lain

List ADT public interface List<E> { public void clear(); public void insert(e item); public void append(e item); public E remove(); public void movetostart(); public void movetoend(); public void prev(); public void next(); public int length(); public int currpos(); public void movetopos(int pos); public E getvalue(); 7

List ADT

List ADT

List ADT: Contoh List: <12 32, 15> L.insert(99); Hasil: <12 99, 32, 15> Iterasi pada seluruh elemen list: for (L.moveToStart(); L.currPos()<L.length(); L.next()) { it = L.getValue(); dosomething(it); 10

List: Implementasi Dua pendekatan standar yang digunakan untuk mengimplementasikan list, yaitu: 1. Array atau list kontigu/list sekuensial 2. Linked list (list berkait/berantai)

Array-Based List Insert 12

Array-based List class list array mempunyai data anggota yang terdiri dari: Ukuran maksimum list (maxsize) Jumlah elemen yang aktual dalam list (listsize) Posisi elemen yang sedang aktif /posisi saat ini (curr) array untuk menyimpan elemen list (listarray)

Array-Based List Class (1) class AList<E> implements List<E> { private static final int defaultsize = 10; private int maxsize; private int listsize; private int curr; private E[] listarray; // Constructors AList() { this(defaultsize); AList(int size) { maxsize = size; listsize = curr = 0; listarray = (E[])new Object[size]; 14

Array-Based List Class (2) public void clear() { listsize = curr = 0; public void movetostart() { curr = 0; public void movetoend() { curr = listsize; public void prev() { if (curr!= 0) curr--; public void next() { if (curr < listsize) curr++; public int length() { return listsize; public int currpos() { return curr; 15

Array-Based List Class (3) public void movetopos(int pos) { assert (pos>=0) && (pos<=listsize) : "Position out of range"; curr = pos; public E getvalue() { assert (curr >= 0) && (curr < listsize) : "No current element"; return listarray[curr]; 16

Insert // Insert "it" at current position */ public void insert(e it) { assert listsize < maxsize: "List capacity exceeded"; for (int i=listsize; i>curr; i--) listarray[i] = listarray[i-1]; listarray[curr] = it; listsize++; 17

Append public void append(e it) { // Append "it" assert listsize < maxsize : "List capacity exceeded"; listarray[listsize++] = it; 18

Remove // Remove and return the current element. public E remove() { assert (curr >= 0) && (curr < listsize) : "No current element"; E it = listarray[curr]; for(int i=curr; i<listsize-1; i++) listarray[i] = listarray[i+1]; listsize--; return it; 19

Linked List Linked list merupakan list berurutan yang mana antara data/elemen yang satu dengan data/elemen yang lain dihubungkan dengan sebuah pointer. Dengan demikian dapat disimpulkan bahwa elemen masing-masing linked list atau lebih sering disebut simpul, terdiri dari dua komponen, yaitu data itu sendiri dan pointer yang menunjuk ke simpul berikutnya

Link Class Dynamic allocation of new list elements. class Link<E> { private E element; private Link<E> next; // Constructors Link(E it, Link<E> nextval) { element = it; next = nextval; Link(Link<E> nextval) { next = nextval; Link<E> next() { return next; Link<E> setnext(link<e> nextval) { return next = nextval; E element() { return element; E setelement(e it) { return element = it; 21

Linked List Position (1) 22

Linked List Position (2) 23

Linked List Class (1) class LList<E> implements List<E> { private Link<E> head; private Link<E> tail; protected Link<E> curr; int cnt; //Constructors LList(int size) { this(); LList() { curr = tail = head = new Link<E>(null); cnt = 0; 24

Linked List Class (2) public void clear() { head.setnext(null); curr = tail = head = new Link<E>(null); cnt = 0; public void movetostart() { curr = head; public void movetoend() { curr = tail; public int length() { return cnt; public void next() { if (curr!= tail) { curr = curr.next(); public E getvalue() { assert curr.next()!= null : "Nothing to get"; return curr.next().element(); 25

Insertion 26

Insert/Append // Insert "it" at current position public void insert(e it) { curr.setnext(new Link<E>(it, curr.next())); if (tail == curr) tail = curr.next(); cnt++; public void append(e it) { tail = tail.setnext(new Link<E>(it, null)); cnt++; 27

Removal 28

Remove /** Remove and return current element */ public E remove() { if (curr.next() == null) return null; E it = curr.next().element(); if (tail == curr.next()) tail = curr; curr.setnext(curr.next().next()); cnt--; return it; 29

Prev /** Move curr one step left; no change if already at front */ public void prev() { if (curr == head) return; Link<E> temp = head; // March down list until we find the // previous element while (temp.next()!= curr) temp = temp.next(); curr = temp; 30

Get/Set Position /** Return position of the current element */ public int currpos() { Link<E> temp = head; int i; for (i=0; curr!= temp; i++) temp = temp.next(); return i; /** Move down list to "pos" position */ public void movetopos(int pos) { assert (pos>=0) && (pos<=cnt) : "Position out of range"; curr = head; for(int i=0; i<pos; i++) curr = curr.next(); 31

Comparison of Implementations Array-Based Lists: Insertion and deletion are (n). Prev and direct access are (1). Array must be allocated in advance. No overhead if all array positions are full. Linked Lists: Insertion and deletion are (1). Prev and direct access are (n). Space grows with number of elements. Every element requires overhead. 32

Space Comparison Break-even point: DE = n(p + E); n = DE P + E E: Space for data value. P: Space for pointer. D: Number of elements in array. 33

Space Example Array-based list: Overhead is one pointer (4 bytes) per position in array whether used or not. Linked list: Overhead is two pointers per link node one to the element, one to the next link Data is the same for both. When is the space the same? When the array is half full 34

Freelists System new and garbage collection are slow. Add freelist support to the Link class. 35

Link Class Extensions static Link freelist = null; static <E> Link<E> get(e it, Link<E> nextval) { if (freelist == null) return new Link<E>(it, nextval); Link<E> temp = freelist; freelist = freelist.next(); temp.setelement(it); temp.setnext(nextval); return temp; void release() { // Return to freelist element = null; next = freelist; freelist = this; 36

Using Freelist public void insert(e it) { curr.setnext(link.get(it, curr.next())); if (tail == curr) tail = curr.next(); cnt++; public E remove() { if (curr.next() == null) return null; E it = curr.next().element(); if (tail == curr.next()) tail = curr; Link<E> tempptr = curr.next(); curr.setnext(curr.next().next()); tempptr.release(); cnt--; return it; 37