Linear List Teknik Informatika Universitas Muhammadiyah Malang SP - 2013 Algoritma & Struktur Data.

Slides:



Advertisements
Presentasi serupa
LINKED LIST.
Advertisements

Workshop SCS: Java Game Programming
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.
Single Linked List.
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.
Implementasi Binary Tree
Lecture 9 Single Linked List Sandy Ardianto & Erick Pranata © Sekolah Tinggi Teknik Surabaya 1.
Queue.
Pemrograman Berorientasi Obyek Oleh Tita Karlita
Algoritma & Struktur Data
Dasar Pemrograman Java Nana Ramadijanti Laboratorium Computer Vision Politeknik Elekltronika Negeri Surabaya PENS-ITS 2008.
Diberikan pada Kuliah Sela Teknik Informatika - Universitas Muhammadiyah Malang Tahun 2011.
Dasar Pemrograman Java Pertemuan 2 Pemrograman Berbasis Obyek Oleh Tita Karlita.
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Linear Data Structures (Linked List). Node Link atau pointer data field.
Implementasi ADT: Linked - List
Algorithm and Data Structures.
Algoritma dan Struktur Data
Object Oriented Programming with JAVA 2011/2012
Linear Data Structures (Queue)
Linear Data Structures (Stack)
Binary Search Tree 2007/2008 – Ganjil – Minggu 9.
Algoritma dan Struktur Data
Struktur Data & Algoritma Suryana Setiawan, Ruli Manurung & Ade Azurat (acknowledgments: Denny) ‏ 1 Fasilkom UI SUR – HMM – AAFasilkom UI - IKI20100/ IKI80110P.
Linear List.
Struktur Data List Linear : Linked List (Single Linkedlist)
Pemrograman Berorientasi Obyek Lanjut (IT251)
Dasar Pemrograman Java Pertemuan 2 Pemrograman Berbasis Obyek.
LINKED LIST.
Class and Object Matakuliah : XXXX / Algoritma dan Metode Object Oriented Programming II Pertemuan : 2 Tahun : 2008 Versi : 1/0.
Pertemuan 13 Graph + Tree jual [Valdo] Lunatik Chubby Stylus.
IKI 20100: Struktur Data & Algoritma Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) ‏ 1 Fasilkom UI Ruli Manurung & Ade AzuratFasilkom.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
METHOD, ARRAY DAN STRING
Pertemuan 7 stack jual [Valdo] Lunatik Chubby Stylus.
IKI 20100: Struktur Data & Algoritma Ruli Manurung & Ade Azurat (acknowledgments: Denny, Suryana Setiawan) 1 Fasilkom UI Ruli Manurung & Ade AzuratFasilkom.
STACK.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
1 HAMPIRAN NUMERIK SOLUSI PERSAMAAN LANJAR Pertemuan 5 Matakuliah: K0342 / Metode Numerik I Tahun: 2006 TIK:Mahasiswa dapat meghitung nilai hampiran numerik.
1 Pertemuan 8 Array & Pointer of Class Matakuliah: T0044/Pemrograman Berorientasi Obyek Tahun: 2005 Versi: 1.0.
Binary Search Tree. Sebuah node di Binary Search Tree memiliki path yang unik dari root menurut aturan ordering – Sebuah Node, mempunyai subtree kiri.
Dasar query basis data dengan SQLite
Universitas Budi Luhur
ADT DINAMIS : SINGLY LINKED LIST DAN DOUBLE LINKED LIST
Binary Tree.
FONDASI PEMROGRAMAN & STRUKTUR DATA #8
PBO Daniel Riano Kaparang, S.Kom., M.Cs
Dynamic Array and Linked List
Pertemuan 2 SINTAKS BAHASA, TIPE DATA, DAN OPERATOR
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Fondasi Pemrograman & Struktur Data
Linear Data Structures (Stack)
FONDASI PEMROGRAMAN & STRUKTUR DATA #4
Kelas-kelas Dasar di Java
Linear Data Structures (Array)
Tipe Data, Variabel, dan Operator
Pemrograman Berorientasi Objek
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator
Tipe Data, Variabel, dan Operator
Algorithms and Programming Searching
Algoritme dan Stuktur Data
Pengenalan JAVA Pengenalan JAVA.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Linked List A group of data which is linked each other.
Identifier, Keywords, Variabel, Tipe Data Primitif dan Operator
Tipe Data, Variabel, dan Operator
Transcript presentasi:

Linear List Teknik Informatika Universitas Muhammadiyah Malang SP Algoritma & Struktur Data

Representasi Linear List dengan Array dan Linked list

Tujuan Instruksional Mahasiswa mampu : Memahami struktur data dari linear list Mampu merepresentasikan linear list menggunakan array dan linked list Mengimplementasikan linear list ke dalam program

Struktur Data Struktur data terdiri dari obyek data dan operasi-operasi. Obyek data adalah sekumpulan instance (model/sampling) Contoh obyek data : integer = {0, +1, -1, +2, -2, +3, -3, …} daysOfWeek = {S,M,T,W,Th,F,Sa} myDataObject = {apple, chair, 2, 5.2, red, green, Jack}

Struktur Data Struktur data dibedakan menjadi 2 jenis : 1.Linear list direpresentasikan dengan : array dan linked list 2.Struktur data hirarki Direpresentasikan dengan : tree dan graph

Linear Lists Disebut juga dengan ordered list. Bentuk instance dari linear list : (e 0, e 1, e 2, …, e n-1 ) where e i denotes a list element n >= 0 is finite (list size is n)

Linear Lists L = (e 0, e 1, e 2, e 3, …, e n-1 ) relationships e 0 is the zero’th (or front) element e n-1 is the last element e i immediately precedes e i+1

Linear List Examples/Instances Students in COP3530 = (Jack, Jill, Abe, Henry, Mary, …, Judy) Exams in COP3530 = (exam1, exam2, exam3) Days of Week = (S, M, T, W, Th, F, Sa) Months = (Jan, Feb, Mar, Apr, …, Nov, Dec)

Struktur data Operations Operasi : aksi yang dapat dilakukan pada obyek data. Operasi-operasi yang umum pada obyek data : penambahan elemen, penghapusan elemen, pengaksesan elemen, dll.

Linear List Operations— size() determine list size L = (a,b,c,d,e) size = 5

Linear List Operations— get(theIndex) get element with given index L = (a,b,c,d,e) get(0) = a get(2) = c get(4) = e get(-1) = error get(9) = error

Linear List Operations— indexOf(theElement) determine the index of an element L = (a,b,d,b,a) indexOf(d) = 2 indexOf(a) = 0 indexOf(z) = -1

Linear List Operations— remove(theIndex) remove and return element with given index L = (a,b,c,d,e,f,g) remove(2) returns c and L becomes (a,b,d,e,f,g) index of d,e,f, and g decrease by 1

Linear List Operations— remove(theIndex) remove and return element with given index L = (a,b,c,d,e,f,g) remove(-1) => error remove(20) => error

Linear List Operations— add(theIndex, theElement) add an element so that the new element has a specified index L = (a,b,c,d,e,f,g) add(0,h) => L = (h,a,b,c,d,e,f,g) index of a,b,c,d,e,f, and g increase by 1

Linear List Operations— add(theIndex, theElement) L = (a,b,c,d,e,f,g) add(2,h) => L = (a,b,h,c,d,e,f,g) index of c,d,e,f, and g increase by 1 add(10,h) => error add(-6,h) => error

Latihan Diketahui L=(a,b,c,d). L adalah sebuah array linier list. Tentukan hasil yang didapatkan ketika dilakukan perintah berikut ini : a)isEmpty() b)size() c)get(0), get(2),get(6),get(-3) d)indexOf(a), indexOf(c), indexOf(q) e)remove(0), remove(2), remove(3) f)add(0,e), add(2,f), add(3,g), add(4,h), add(6,h), add(-3,h)

Data Structure Specification  Language independent  Abstract Data Type  Java  Interface  Abstract Class

Linear List Abstract Data Type AbstractDataType LinearList { instances ordered finite collections of zero or more elements operations isEmpty(): return true if the list is empty, false otherwise size(): return the list size (i.e., number of elements in the list) get(index): return the indexth element of the list indexO f(x): return the index of the first occurrence of x in the list, return -1 if x is not in the list remove(index): remove and return the indexth element, elements with higher index have their index reduced by 1 add(theIndex, x): insert x as the indexth element, elements with theIndex >= index have their index increased by 1 output(): output the list elements from left to right }

Linear List as Java Interface An interface may include constants and abstract methods (i.e., methods for which no implementation is provided).

Linear List as Java Interface public interface LinearList { public boolean isEmpty(); public int size(); public Object get(int index); public int indexOf(Object elem); public Object remove(int index); public void add(int index, Object obj); public String toString(); }

Implementing An Interface public class ArrayLinearList implements LinearList { // code for all LinearList methods must be provided here }

Linear List As An Abstract Class An abstract class may include constants, variables, abstract methods, and nonabstract methods.

Linear List As Java Abstract Class public abstract class LinearListAsAbstractClass { public abstract boolean isEmpty(); public abstract int size(); public abstract Object get(int index); public abstract int indexOf(Object theElement); public abstract Object remove(int index); public abstract void add(int index, Object theElement); public abstract String toString(); }

Extending A Java Class public class ArrayLinearList extends LinearListAsAbstractClass { // code for all abstract classes must come here }

Linear List Array Representation use a one-dimensional array element[] abcde L = (a, b, c, d, e) Store element i of list in element[i].

Representation Used In Text put element i of list in element[i] use a variable size to record current number of elements abcde size = 5

Add/Remove An Element abcde size = 5 agbcde size = 6 add(1,g)

Data Type Of Array element[] Data type of list elements is unknown. Define element[] to be of data type Object. Cannot put elements of primitive data types (int, float, double, char, etc.) into our linear lists.

Increasing Array Length Length of array element[] is 6. abcdef newArray = new Object[15]; First create a new and larger array

Increasing Array Length Now copy elements from old array to new one. abcdefabcdef

Increasing Array Length Finally, rename new array. element = newArray; element.length = 15 abcdef element[0]

Class ArrayLinearList Merupakan hasil implements dari interface LinearList.

Create An Empty List ArrayLinearList a = new ArrayLinearList(100), b = new ArrayLinearList(), c; LinearList d = new ArrayLinearList(1000), e = new ArrayLinearList(), f;

Using A Linear List System.out.println(a.size()); a.add(0, new Integer(2)); b.add(0, new Integer(4)); System.out.println(a); b.remove(0); if (a.isEmpty()) a.add(0, new Integer(5));

Array Of Linear Lists LinearList [] x = new LinearList [4]; x[0] = new ArrayLinearList(20); x[1] = new Chain(); x[2] = new Chain(); x[3] = new ArrayLinearList(); for (int i = 0; i < 4; i++) x[i].add(0, new Integer(i));

The Class ArrayLinearList /** array implementation of LinearList */ package dataStructures; import java.util.*; // has Iterator interface import utilities.*; // has array resizing class public class ArrayLinearList implements LinearList { // data members protected Object [] element; // array of elements protected int size; // number of elements in array // constructors and other methods come here }

A Constructor /** create a list with initial capacity initialCapacity IllegalArgumentException when * initialCapacity < 1 */ public ArrayLinearList(int initialCapacity) { if (initialCapacity < 1) throw new IllegalArgumentException ("initialCapacity must be >= 1"); // size has the default initial value of 0 element = new Object [initialCapacity]; }

Another Constructor /** create a list with initial capacity 10 */ public ArrayLinearList() {// use default capacity of 10 this(10); }

The Method isEmpty true iff list is empty */ public boolean isEmpty() {return size == 0;}

The Method size() current number of elements in list */ public int size() {return size;}

The Method checkIndex IndexOutOfBoundsException when * index is not between 0 and size - 1 */ void checkIndex(int index) { if (index = size) throw new IndexOutOfBoundsException ("index = " + index + " size = " + size); }

The Method get element with specified index IndexOutOfBoundsException when * index is not between 0 and size - 1 */ public Object get(int index) { checkIndex(index); return element[index]; }

The Method indexOf index of first occurrence of theElement, * return -1 if theElement not in list */ public int indexOf(Object theElement) { // search element[] for theElement for (int i = 0; i < size; i++) if (element[i].equals(theElement)) return i; // theElement not found return -1; }

The Method remove public Object remove(int index) { checkIndex(index); // valid index, shift elements with higher index Object removedElement = element[index]; for (int i = index + 1; i < size; i++) element[i-1] = element[i]; element[--size] = null; // enable garbage collection return removedElement; }

The Method add public void add(int index, Object theElement) { if (index size) // invalid list position throw new IndexOutOfBoundsException ("index = " + index + " size = " + size); // valid index, make sure we have space if (size == element.length) // no space, double capacity element = ChangeArrayLength.changeLength1D(element, 2 * size);

The Method add // shift elements right one position for (int i = size - 1; i >= index; i--) element[i + 1] = element[i]; element[index] = theElement; size++; }

Faster Way To Shift Elements 1 Right System.arraycopy(element, index, element, index + 1, size - index);

Convert To A String public String toString() { StringBuffer s = new StringBuffer("["); // put elements into the buffer for (int i = 0; i < size; i++) if (element[i] == null) s.append("null, "); else s.append(element[i].toString() + ", "); if (size > 0) s.delete(s.length() - 2, s.length()); // remove last ", " s.append("]"); // create equivalent String return new String(s); }

Linear list Linked-Lists Representation

Definisi Linked list : linear list yang dibangun dari satu atau lebih node. Node terdiri dari dua bagian : data field dan pointer. Data field: bagian dari list node untuk menyimpan data. Pointer : bagian dari list node untuk menunjuk node berikutnya.

Node Link atau pointer data field

Single linked list Yaitu Linked list yang memiliki satu pointer. Pointer bantu : firstnode

Linked Representation pointer (or link) in e is null caedb use a variable firstNode to get to the first element a firstNode

Normal Way To Draw A Linked List link or pointer field of node data field of node abcde null firstNode

Linked Lists vs Array Menyimpan koleksi elemen secara non-contiguously. Elemen dapat terletak pada lokasi memory yang saling berjauhan. Bandingkan dengan array dimana tiap-tiap elemen akan terletak pada lokasi memory yang berurutan. Mengizinkan operasi penambahan atau penghapusan elemen ditengah-tengah koleksi dengan hanya membutuhkan jumlah perpindahan elemen yang konstan. Bandingkan dengan array. Berapa banyak elemen yang harus dipindahkan bila akan menyisipi elemen ditengah- tengah array? A0A1A2A3

Chain A chain is a linked list in which each node represents one element. There is a link or pointer from one element to the next. The last node has a null pointer. abcde null firstNode

Latihan Diketahui L=(a,b,c,d). L adalah sebuah linked lists.. Tentukan hasil yang didapatkan ketika dilakukan operasi berikut ini : a)isEmpty() b)size() c)get(0), get(2),get(6),get(-3) d)indexOf(a), indexOf(c), indexOf(q) e)remove(0), remove(2), remove(3) f)add(0,e), add(2,f), add(3,g), add(4,h), add(6,h), add(-3,h) (Gambarkan rangkaian node pembentuk linked list tersebut kondisi awal dan akhir tiap operasi)

Node Representation package dataStructures; class ChainNode { // package visible data members Object element; ChainNode next; // constructors come here } next element

Constructors Of ChainNode ChainNode() {} null element next element ChainNode(Object element) {this.element = element;} ChainNode(Object element, ChainNode next) {this.element = element; this.next = next;}

get(0) checkIndex(0); desiredNode = firstNode; // gets you to first node return desiredNode.element; abcde null firstNode

get(1) checkIndex(1); desiredNode = firstNode.next; // gets you to second node return desiredNode.element; abcde null firstNode

get(2) checkIndex(2); desiredNode = firstNode.next.next; // gets you to third node return desiredNode.element; abcde null firstNode

get(5) checkIndex(5); // throws exception desiredNode = firstNode.next.next.next.next.next; // desiredNode = null return desiredNode.element; // null.element abcde null firstNode

NullPointerException desiredNode = firstNode.next.next.next.next.next.next; // gets the computer mad // you get a NullPointerException abcde null firstNode

Remove An Element remove(0) abcde null firstNode firstNode = firstNode.next;

abde null firstNode c remove(2) first get to node just before node to be removed c c beforeNode = firstNode.next ; b beforeNode

remove(2) now change pointer in beforeNode beforeNode.next = beforeNode.next.next; beforeNode abcde null firstNode

add(0,’f’) abcde null firstNode f newNod e Step 1: get a node, set its data and link fields ChainNode newNode = new ChainNode(new Character(‘f’), firstNode);

add(0,’f’) abcde null firstNode f newNod e Step 2: update firstNode firstNode = newNode;

One-Step add(0,’f’) abcde null firstNode f newNod e firstNode = new ChainNode( new Character(‘f’), firstNode);

add(3,’f’) first find node whose index is 2 abcde null firstNode f newNode beforeNode c next create a node and set its data and link fields ChainNode newNode = new ChainNode(new Character(‘f’), beforeNode.next); finally link beforeNode to newNode beforeNode.next = newNode;

Two-Step add(3,’f’) beforeNode = firstNode.next.next; beforeNode.next = new ChainNode(new Character(‘f’), beforeNode.next); abcde null firstNode f newNode beforeNode c