1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

dokumen-dokumen yang mirip
List Linier. IF2030/Algoritma dan Struktur Data. 11/6/2009 FNA+WDS/IF2030/Sem

LIST LINIER 1. DEFINISI

List Linier (Bag. I) IF2121/Algoritma dan Struktur Data Sem. I 2016/ /25/2017 IF2121/Sem I 2017/2018 1

Representasi Logic List Linier

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

Struktur Data. Queue (Antrian)

IKG2A3/ Pemrograman Terstruktur 2

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Variasi List Linier

Variasi List Linier (Bagian 2)

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Stack (Tumpukan)

Bagian I. Studi Kasus [82] Tanda tangan:

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Queue (Antrian)

Pencarian pada Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Kode : IF2121 NIM :... Matakuliah : Algoritma dan Struktur Data Nama :... Hari, Tanggal : Senin, 13 November 2017 Waktu : 150 Menit

Array (Tabel) Tim Pengajar KU1071 Sem /11/3 TW/KU1071 1

BAB II STACK Atau TUMPUKAN

ALGORITMA & PEMROGRAMAN

MODUL PRAKTIKUM STRUKTUR DATA Modul ke-1, Pertemuan ke-1 Nama file : P01-XXX (XXX adalah 3 digit terakhir NIM) Deskripsi: Senarai, Traversal

Variasi List Linier. Nisa ul Hafidhoh, MT

IKG2A3/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Mesin Abstrak

A. Bagian I. Studi Kasus

Kode MK/ Pemrograman Terstruktur 2. ZK Abdurahman Baizal. KK Algoritma dan Komputasi. Tree (Pohon)

BAB 1 PENGANTAR KE STRUKTUR DATA

DIKTAT KULIAH STRUKTUR DATA. Disusun oleh: Sri Primaini A.

PENGULANGAN SKEMA PEMROSESAN SEKUENSIAL. Tim Pengajar KU1071 Sem

Menghapus Pointer Statement yang digunakan untuk menghapus pointer adalah Dispose, yang mempunyai bentuk umum : Dispose(peubah) ;

Kode MK/ Pemrograman Terstruktur 2

1. Inggriani Liem Catatan Kuliah Algoritma & Pemrograman, Jurusan Teknik Informatika ITB

BAB IX LINKED LIST (SENARAI BERANTAI)

Linked List. Bandung 2013

4 LINKED LIST. 4.1 Istilah-istilah 1. Simpul Simpul terdiri dari dua bagian, yaitu : Bagian data Bagian pointer yang menunjuk ke simpul berikutnya.

A B C D E F. Gambar 1. Senarai berantai dengan 6 simpul

Optimalisasi Algoritma Pencarian Data Memanfaatkan Pohon Biner Terurut

PENGULANGAN Bagian 1 : Notasi. Tim Pengajar KU1071 Sem

Games and Quiz PT II. Dr. Putu Harry Gunawan, MSi.,MSc. phg-simulation-laboratory.com

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

BAB XI Manipulasi Binary Tree

QUEUE Antrian 1. DEFINISI

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

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

Algoritma dan Struktur Data. Pertemuan 7 Linked List

QUEUE (ANTRIAN) Struktur Data - Queue

Lab. Teknik Informatika Struktur Data 1

Algoritma dan Pemrograman Array/Tabel[2] Oleh: Eddy Prasetyo N

BAB IX LINKED LIST (SENARAI BERANTAI)

Algoritma Euclidean dan Struktur Data Pohon dalam Bahasa Pemrograman LISP

LOGO STRUKTUR DATA QUEUE

RESUME A B C D. Gambar 1 Double Linked list dengan Empat Simpul

MODUL 6 SINGLE & DOUBLE LINKED LIST

ARRAY DINAMIS. Type. Pengenal = Simpul Simpul = Type. (Nama var) : ( Type data)

LATIHAN UTS Tim Pengajar KU1071 Sem

LINKED LIST. Altien Jonathan Rindengan, S.Si, M.Kom

Array. Tim PHKI Modul Dasar Pemrograman Fakultas Ilmu Komputer UDINUS Semarang

Gambar 3.1. Circular Single Linked List. Deklarasi bisa dilihat kembali di Single Linked List atau Double Linked List.

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

3. DOUBLE LINK LIST. Lab. Teknik Informatika Struktur Data 1

GANJIL 2009/2010 NIM: Algoritma dan Struktur Data / CS2014 Nama :

ALGORITMA PENCARIAN SIMPUL SOLUSI DALAM GRAF

TOPOLOGICAL SORT dengan DFS dan METODE LAIN

SEARCHING. Pusat Pengembangan Pendidikan Universitas Gadjah Mada 1

MODUL PRAKTIKUM PERCABANGAN DAN PENGULANGAN

Analisis Perbandingan Algoritma Rekursif dan Non-Rekursif secara DFS (Depth First Search) dengan Memanfaatkan Graf

LIST. Dewi Sartika, M.Kom

Aplikasi Graf Breadth-First Search Pada Solver Rubik s Cube

AlgoritmaBrute Force. Desain dan Analisis Algoritma (CS3024)

CCH1A4 / Dasar Algoritma & Pemrogramanan

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

BAB 1 KONSEP DASAR. Algoritma adalah urutan langkah-langkah logis untuk menyelesaikan sebuah masalah yang disusun secara sistematis.

Algoritma Brute Force (Bagian 1) Oleh: Rinaldi Munir

PENCARIAN SOLUSI TTS ANGKA DENGAN ALGORITMA RUNUT BALIK BESERTA PENGEMBANGANNYA

PENGANTAR KOMPUTER & SOFTWARE II

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

VARIABEL, TIPE DATA, KONSTANTA, OPERATOR DAN EKSPRESI. Pemrograman Dasar Kelas X Semester 2

BFS dan DFS. Bahan Kuliah IF2151 Strategi Algoritmik. Oleh: Rinaldi Munir

Penerapan Algoritma DFS dan BFS untuk Permainan Wordsearch Puzzle

TYPE. Inggriani Liem : Catatan Kuliah Algoritma & Pemrograman, Jurusan teknik Informatika - ITB TYPE.doc/TYPE- 21/08/03 16:04

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

Modul 1 Mesin Karakter 1

SENARAI BERANTAI (LINK LIST)

1 Pencarian. 1.1 Tinjauan Singkat Larik

Algoritma dan Struktur Data. Pertemuan 8 Doubly Linked List

Kompleksitas Algoritma Pengurutan Selection Sort dan Insertion Sort

Algoritma Brute Force

STRUKTUR DATA. Pengajar. Jaidan Jauhari, M.T. Alamat

PENERAPAN ALGORITMA BFS PADA CHINESE SLIDE BLOCK PUZZLE (KLOTSKI)

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Queue.

KERUGIAN DAN KEUNTUNGAN LINKED LIST

{ Kamus Umum } constant IdxMax : integer = 100 constant IdxMin : integer = 1 constant IdxUndef : integer = -999 { indeks tak terdefinisi}

BAB VII SENARAI BERANTAI (List)

CCH1A4 / Dasar Algoritma & Pemrogramanan

Array. Teknik Informatika Politeknik Negeri Batam

Jadi satu simpul di double linked list adalah sebagai berikut : Info. Kiri. Kanan

Mesin Karakter dan Mesin Kata

Algoritma dan Struktur Data. Linked List

CCH1A4 / Dasar Algoritma & Pemrogramanan

PERBANDINGAN KOMPLEKSITAS ALGORITMA PENCARIAN BINER DAN ALGORITMA PENCARIAN BERUNTUN

Transkripsi:

Pertemuan Ke 5 : List Linier (Linked List) Referensi: 1. Inggriani Liem. 2003. Catatan Kuliah & Pemrograman, Jurusan Teknik Informatika ITB 2. Rinaldi Munir. 2003. dan Pemrograman II. Bandung : Penerbit Informatika I. List Berkait 1. Definisi List linier adalah sekumpulan elemen bertype sama, yang mempunyai keterurutan tertentu, yang setiap elemennya terdiri dari 2 bagian : info dan next. Type ElmtList = record < Info : InfoType, Next : address > InfoType adalah sebuah type terdefenisi yang menyimpan informasi sebuah elemen list sedangkan Next adalah address dari elemen berikutnya ( suksesor ). Dengan demikian, jika didefinisikan First adalah alamat elemen pertama list, maka elemen berikutnya dapat diakses secara terurut (suksesif) dari elemen pertama suatu list. Representasi lojik list dapat digambarkan seperti gambar berikut: Sebuah list linier dapat dikenali dengan cara: elemen pertamanya, biasanya melalui alamat elemen pertama yang disebut : First alamat elemen berikutnya ( suksesor ), jika kita mengetahui alamat sebuah elemen, yang dapat diakses melalui field Next 1

setiap elemen mempunyai alamat, yaitu tempat elemen disimpan dapat diacu.untuk mengacu sebuah elemen, alamat harus terdefenisi. Dengan alamat tersebut Informasi yang tersimpan pada elemen list dapat diakses. elemen terakhirnya. Elemen terakhir dikenali dengan Next(P)==NIL Jika L adalah list, dan P adalah address : Alamat elemen pertama list L dapat diacu dengan menggunakan notasi : First (L). Elemen yang diacu oleh P dapat dipergunakan informasinya dengan menggunakan notasi : Info(P) Next(P) Beberapa pengertian dasar mengenai list adalah: 1. List L adalah List kosong, jika First(L) = Nil 2. Elemen terakhir dikenali, dengan salah satu cara adalah karena Next(Last)=Nil Secara umum kamus data / deklarasi yang digunakan untuk merepresentasikan list adalah: Nama Umum type InfoType = {Sebuah type terdefinisi, record} type Address pointer to ElmtList type ElmtList : record <Info : InfoType, Next : Address > type List = record <First : Address > atau dapat juga type List = Address {Deklarasi Nama Peubah} L : List P : Address { Dengan deklarasi seperti di atas maka: 2

First(L) menjadi L Info(P) menjadi P. Info Next(P) menjadi P.Next Nil tetap Nil 2. Skema traversal (penelusuran) untuk list linier List terdiri dari sekumpulan elemen. Seringkali diperlukan untuk memproses setiap elemen list dengan cara yang sama. Karena itu salah primitif operasi konsultasi dasar pada struktur list adalah traversal, yaitu mengunjungi setiap elemen list untuk diproses. Akses list selalu dimulai dari elemen pertama, maka penelusuran selalu dimulai dari elemen pertama dan seterusnya ke elemen elemen berikutnya sampai dengan elemen terakhir Procedure SKEMAListTransversal1( Input L : List ) {K. Awal: List L terdefinisi, mungkin kosong } {K. Akhir: semua elemen list L dikunjungi dan telah diproses } {Proses : Traversal sebuah list linier. Dengan MARK, tanpa pemrosesan khusus pada list kosong} {Deklarasi nama} P : address { address untuk traversal, type terdefenisi } Inisialisasi {Prosedur Inisialialisasi yang terdefinisi, jika ada} P First ( L ) {ambil elemen pertama} While ( P Nil ) do } Proses ( P ) P Next (P) { ambil elemen berikutnya} {P ==NIL, kondisi keluar dari traversal} Terminasi {Prosedur terminasi yang terdefinisi} Procedure SKEMAListTransversal2( Input L : List ) {K. Awal: List L terdefinisi, mungkin kosong } {K. Akhir: semua elemen list L dikunjungi dan telah diproses } 3

{Proses : Traversal sebuah list linier dengan perlakuan khusus untuk list linier yang kosong, pemrosesan engan mark} {Deklarasi nama} P : address { address untuk traversal, type terdefenisi } Inisialisasi {Prosedur Inisialialisasi yang terdefinisi, jika ada} If (First(L)==NIL) then Output( List Kosong) Else Until P First ( L ) {ambil elemen pertama} Repeat Proses ( P ) P Next (P) Until ( P == Nil ) do {P ==NIL, kondisi keluar dari traversal} Terminasi {Prosedur terminasi yang terdefinisi} 3. Skema Sequential Search untuk list linier Selain traversal, proses pencarian suatu elemen list adalah primitif yang sering kali didefinisikan pada struktur list. Pencarian dapat berdasarkan nilai yang terdapat pada info, atau berdasarkan alamat tertentu. 3.1. Pencarian suatu nilai, output adalah address Search ini sering digunakan untuk mengenali suatu elemen list berdasarkan nilai informasi yang disimpan pada elemen yang dicari. Biasanya dengan alamat yang ditemukan, akan dilakukan suatu proses terhadap elemen list tersebut. Procedure SKEMAListSearch1 ( Input L : List, X : InfoType, Output P : address, Found: Boolean ) { K. Awal : List linier L sudah terdefinisi dan siap dikonsultasi, X terdefenisi } 4

{ K.Akhir : P : address pada pencarian beurutan, dimana X diketemukan, P = Nil jika tidak ketemu, Found berharga true jika harga X yang dicari ketemu, false jika tidak. Jika X ada pada list di lebih dari satu elemen, maka yang diambil adalah X pada elemen pertama } - P First ( L ) {ambil elemen pertama} Found false {inisialisasi nilai Found, asumsi belum ditemukan} While ( P Nil ) and ( not found ) do if X = Info (P) then Found True else P Next (P) endif { P = Nil or Found} {Jika Found maka P adalah address dimana harga yang dicari diketemukan} 3.2. Pencarian suatu Elemen yang beralamat tertentu Procedure SKEMAList Search2( Input L : List, P : address, Output : Found: Boolean ) {K. Awal : List linier L sudah terdefinisi dan siap dikonsultasi, X terdefenisi } {K.Akhir : Jika ada elemen list beralamat P, Found berharga true, Jika tidak ada elemen list beralamat P, Found berharga false } {Proses : Sequential Search 2 pada sebuah list linier L, Semua elemen diperiksa dengan intruksi yang sama } 5

Pt : address Pt First ( L ) {ambil elemen pertama} Found false {inisialisasi nilai Found, asumsi belum ditemukan} While ( Pt Nil ) and ( not Found ) do if Pt = P then Found true else Pt Next (Pt) { Pt = Nil or Found} { Jika Found maka P adalah elemen list} 4. fungsional list linier Secara fungsional, pada sebuah list linier biasanya dilakukan pembuatan, penambahan atau penghapusan elemen yang dapat ditulis sebagai berkut : Jika diberikan L, L1 dan L2 adalah list linier dengan elemen ElmtList, maka operasi yang dapat dilakukan : ListEmpty, CreateList, Insert, Delete, Concat dan UpdateList 4.1. List Kosong Function IsEmptyList (input: L : List ) boolean { Fungsi digunakan untuk memeriksa apakah sebuah list L kosong, mengirimkan true jika list kosong, false jika tidak kosong} 6

Pt : address (First (L) = Nil) 4.2. Pembuatan sebuah elemen pada list linier Pembuatan sebuah list berarti membuat sebuat list KOSONG, yang selanjutnya siap diproses. Realisasi algoritmik dari defenisi funfsional ini adalah sebuah prosedur sebagai berikut. Procedure CreateList( Output L : List ) {K. Awal : Sembarang, K. Akhir : terbentuk list L yang kosong : First (L) diinisialisasi dengan NIL ) Proses : Membuat list kosong} - First (L) Nil 4.3. Penyisipan sebuah elemen pada list linier Fungsi penyisipan harus dijabarkan lebih rinci. Hal ini karena elemen yang disisipkan bisa menjadi elemen pertama, setelah sebuah address P atau penyisipan menjadi elemen terakhir atau bahkan menjadi elemen ditengah. Penyisipan sebuah elemen dapat dilakukan terhadap sebuah elemen yang sudah dialokasi (diketahui address-nya ), atau sebuah elemen yang hanya diketahui nilai Info-nya (berarti belum dialokasi). 4.3.1. Penyisipan address sebagai alemen pertama Menambahkan sebuah elemen yang diketahui alamatnya sebagai elemen pertama list. 7

Procedure InsertFirst (Input/Output L:List, Input P: address) {K. Awal : List L mungkin kosong {K. Akhir : P adalah elemen pertama list L} {Proses : Insert sebuah elemen beralamat P sebagai list linier L yang mungkin kosong} elemen pertama - Next (P) First (L) First (L) P 4.3.2. Menyisipkan elemen list berupa Nilai pada sebuah list Menambahkan sebuah elemen yang diketahui nilainya sebagai elemen pertama list. Procedure InsFirst (Input/output L :List, Input E : infotype ) { K. Awal : List L mungkin kosong } { K. Akhir : Sebuah elemen dialokasikan dan menjadi elemen pertama list L, jika alokasi berhasil. Jika alokasi gagal list tetap seperti semula } { Proses : Insert sebuah elemen sebagai elemen pertama list} P : address Alokasi (P) If P Nil then Info (P) E 8

Next (P) First (L) First (L) P 4.3.3. Menyisipkan setelah elemen list tertentu Menyisihkan sebuah elemen beralamat P sebagai suksesor dari sebuah elemen list linier yang beralamat Prec Contoh kasus insert after dengan List tidak kosong seperti gambar di bawah. K-Awal K-Akhir setelap Procedur InsertAfter dijalankan terhadap List di atas 9

Procedure InsertAfter ( Input P, Prec: address ) {K. Awal : Prec adalah elemen list, prec Nil, P sudah dialokasikan, P Nil, Next (P) = Nil. K. Akhir : P menjadi suksesor Prec Proses : Insert sebuah elemen beralamat P pada List linier L} Next (P) Next (Prec) Next (Prec) P 10