Linked List. Bandung 2013

dokumen-dokumen yang mirip
ALGORITMA & PEMROGRAMAN

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

LOGO STRUKTUR DATA QUEUE

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

QUEUE (ANTRIAN) Struktur Data - Queue

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

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

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB IX LINKED LIST (SENARAI BERANTAI)

KERUGIAN DAN KEUNTUNGAN LINKED LIST

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

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Pertemuan 3. Perubah Dinamis (Dinamic variable) Suatu perubah yang akan dialokasikan hanya pada saat diperlukan, yaitu setelah program dieksekusi.

SENARAI BERANTAI (LINK LIST)

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

KONSEP POINTER DAN LINKED LIST

Algoritma dan Pemrograman Searching/Pencarian

Lab. Teknik Informatika Struktur Data 1

Pada kondisi ini proses penghapusan tidak bisa dilakukan Kondisi linked list memiliki hanya 1 data{satu simpul} Akhir. Akhir

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

SINGLE LINKED LIST (NON CIRCULAR)

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

KONSEP POINTER DAN LINKED LIST

Double linked list. Gambar 1. Double linket list dengan empat simpul Deklarasi Double Linked List di dalam Pascal :

STRUKTUR DATA (2) Single Linked List

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

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

ARRAY STATIS. Type namatype_array = array [1..maks_array] of tipedata. nama_var_array : namatype_array {indeks array dari 1 sampai maksimum array}

Array VS Linked List

STRUKTUR DATA single linked list non circular

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

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Algoritma dan Struktur Data. Pertemuan 7 Linked List

DIKTAT STRUKTUR DATA Oleh: Tim Struktur Data IF

Struktur Data. Queue (Antrian)

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

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

STACK (TUMPUKAN) Secara sederhana, sebuah tumpukan bisa kita ilustrasikan seperti gambar berikut.

PENCARIAN BERUNTUN (SEQUENTIAL SEARCHING)

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

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

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

KONSEP POINTER DAN LINKED LIST

Algoritma Shell Sort Ascending Dan Binary Sequential Search Menggunakan C

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

BAB XI Manipulasi Binary Tree

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

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

LIST LINIER 1. DEFINISI

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

BAB VII SENARAI BERANTAI (List)

Single Linked List (1)

Struktur Data II. Single Linked List - Non circular

Searching [pencarian] Algoritma Pemrograman

Adam Mukharil Bachtiar English Class Informatics Engineering Algorithms and Programming Searching

MODUL 6 SINGLE & DOUBLE LINKED LIST

LATIHAN UTS Tim Pengajar KU1071 Sem

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

BAB VIII Pencarian(Searching)

Bagian I. Studi Kasus [82] Tanda tangan:

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

ALGORITMA DAN STRUKTUR DATA

SEQUENTIAL SEARCH 11/11/2010. Sequential Search (Tanpa Variabel Logika) untuk kondisi data tidak terurut

Algoritma dan Struktur Data. Linked List

CCH1A4 / Dasar Algoritma & Pemrogramanan

STACK (TUMPUKAN) Tumpukan uang koin Tumpukan kotak Tumpukan Buku. Gambar 1. Macam-macam tumpukan

IKG2A3/ Pemrograman Terstruktur 2

Representasi Logic List Linier

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

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

Bab 4 Pointer dan Struktur Data Dinamik 16 BAB IV POINTER DAN STRUKTUR DATA DINAMIK TUJUAN PRAKTIKUM TEORI PENUNJANG

BAB 10 POINTER 5.1 Tujuan 5.2 Pengertian Pointer Perubah dinamis pointer

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

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

DIKTAT KULIAH ALGORITMA dan STRUKTUR DATA II. Tujuan Pembelajaran : Mahasiswa mampu menjelaskan teknik pemrograman menggunakan Stack.

SINGLE LINKED LIST NON CIRCULAR (SENARAI BERANTAI TUNGGAL TIDAK BERPUTAR)

Pointer. Pengertian. Struktur Data Pascal

Sebuah algoritma tidak saja harus benar, tetapi juga harus mangkus (efisien). Algoritma yang bagus adalah algoritma yang mangkus.

BAB 1 PENGANTAR KE STRUKTUR DATA

BAB II Senarai Berantai (Linked List)

4. STACK / TUMPUKAN TEORI PENUNJANG

AnalisisFramework. Mengukur ukuran atau jumlah input Mengukur waktu eksekusi Tingkat pertumbuhan Efiesiensi worst-case, best-case dan average-case

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

ALGORITMA PENGURUTAN & PENCARIAN

Analisis Algoritm. Fundamentals of the Anlysis of Algorithm Efficiency

Kode MK/ Pemrograman Terstruktur 2

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Struktur Data. Tumpukan : Definisi & Operasi. Pertemuan 4 PROBLEM ALGORITHM DATA IMPLEMENTATION. Pert. 4b Struktur Data - FMIPA USD

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

PERKENALAN STRUKTUR DATA. Firmansyah, S.Kom

Langkah Mudah Belajar Struktur Data Menggunakan C/C++

POINTER PADA PASCAL. <nama_var> : ^<tipe_data>; <nama_var> : pointer;

Yaitu proses pengaturan sekumpulan objek menurut urutan atau susunan tertentu Acuan pengurutan dibedakan menjadi :

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

LIST. Dewi Sartika, M.Kom

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

Algoritma dan Struktur Data

Transkripsi:

Linked List Bandung 2013

PENGERTIAN LINKED LIST Salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung, dinamis dan tidak terbatas. Linked List sering disebut juga Senarai Berantai Linked List saling terhubung dengan bantuan variabel pointer Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa record

Array vs Linked List

Bentuk Linked List Single Linked List Double Linked List Circular Linked List

Single Linked List Linked list dengan simpul berisi satu link / pointer yang mengacu ke simpul berikutnya Simpul Single Linked List : Medan Data (Info) Medan Sambungan (next)

Deklarasi Single Linked List (Algoritma) Type nama_pointer = Simpul Simpul = Record medan_data : tipedata, medan_sambungan : nama_pointer EndRecord nama_var_pointer : nama_pointer

Contoh Deklarasi Single Linked List Type Point = Data Data = Record Info : char, Next : Point Endrecord, : Point

Operasi operasi Single Linked List 1. Penciptaan (create) 2. Penyisipan 3. Penghapusan 4. Traversal 5. Pencarian (Searching) 6. Pengurutan (Sorting) 7. Penghancuran (destroy)

Penciptaan Pointer dan diberi harga nil/null ß nil ß nil

Penyisipan di Depan - Jika List kosong { = nil} baru baru 1 baru 1 alloc(baru) baru ß nil baru.info ß 1 ß baru ß baru

Penyisipan di Depan (lanjutan) - Jika List tidak kosong {Awal Nil} Misalkan mula-mula keadaan List memiliki dua simpul: 2 3 Satu simpul akan disisipkan di depan baru 1 alloc(baru) baru.info ß 1

Penyisipan di Depan (lanjutan) Simpul baru akan disisipkan di depan simpul yang ditunjuk oleh pointer 2 baru 1 3 baru.next ß

Penyisipan di Depan (lanjutan) Setelah simpul baru tersambung dengan simpul pertama dari list, lalu pindahkan pointer ke simpul yang baru ß baru 2 3 baru 1

Penyisipan di Depan (lanjutan) Keadaan Linked List setelah terjadi penyisipan di depan/di (untuk nil) : baru 1 2 3

Algoritma Penyisipan di Depan Procedure SisipDepanSingle(Input elemen : tipedata, I/O, : nama_pointer) {I.S. : data yang akan disisipkan (elemen), pointer penunjuk dan pointer penunjuk sudah terdifinisi} {F.S. : menghasilkan satu simpul yang disisipkan di depan pada single linked list} Kamus : baru : nama_pointer Algoritma : alloc(baru) baru.info ß elemen If ( = nil) Then baru.next ß nil ß baru Else baru.next ß EndIf ß baru EndProcedure

Penyisipan di Belakang - Jika List kosong { = nil} {sama seperti pada penyisipan di depan} - Jika List tidak kosong { nil} Misalkan mula-mula List memiliki dua simpul: Simpul yang akan disisipkan: baru 1 3 2 alloc(baru) baru.next ß nil baru.info ß 1

Penyisipan di Belakang (lanjutan) Simpul baru akan disisipkan setelah simpul yang ditunjuk pointer 3 2.nextß baru baru 1

Penyisipan di Belakang (lanjutan) Pindahkan pointer ke simpul yang baru 3 2 ß baru baru 1

Penyisipan di Belakang (lanjutan) Keadaan Linked List setelah terjadi penyisipan satu simpul di belakang (untuk nil) : 3 2 1 baru

Algoritma Penyisipan di Belakang Procedure SisipBelakangSingle(Input elemen : tipedata, I/O, : nama_pointer) {I.S. : data yang akan disisipkan (elemen), pointer penunjuk dan pointer penunjuk sudah terdifinisi} {F.S. : menghasilkan satu simpul yang disisipkan di belakang pada single linked list} Kamus : baru : nama_pointer Algoritma : alloc(baru) baru.info ß elemen baru.next ß nil If ( = nil) Then ß baru Else.next ß baru EndIf ß baru EndProcedure

Penyisipan di Tengah - Jika List kosong { = nil} {sama seperti pada penyisipan di depan} - Jika List tidak kosong { Nil} 3 4 baru 1 2 5 Misal akan menyisipkan angka 1 setelah angka 4 alloc(baru) baru.info ß 1

Penyisipan di Tengah (lanjutan) Angka 4 ditemukan dengan cara mencari mulai dari simpul pertama sampai simpul yang ada angka 4 ditemukan (metode sequential search). Misalkan pointer yang mencari angka 4 adalah pointer bantu, berarti pointer bantu akan menunjuk simpul ke-2 karena simpul tersebut berisi data yang dicari. bantu bantu 3 4 baru 1 2 5 baru.next ß bantu.next

Penyisipan di Tengah (lanjutan) Hubungkan medan sambungan dari simpul yang baru ke simpul tetangganya dari simpul yang ditunjuk oleh pointer bantu bantu 3 4 baru 1 2 5 baru.next ß bantu.next

Penyisipan di Tengah (lanjutan) Setelah simpul baru terhubung ke simpul setelah simpul yang ada angka 4, maka sambungkan medan sambungan (next) dari simpul yang ditunjuk pointer bantu ke simpul baru bantu 3 4 2 5 bantu.next ß baru baru 1

Penyisipan di Tengah (lanjutan) Keadaan Linked List setelah terjadi penyisipan satu simpul di tengah (untuk nil) : bantu 3 4 2 5 baru 1

Algoritma Penyisipan di Tengah Procedure SisipTengahSingle(Input elemen : tipedata, I/O, : nama_pointer) {I.S. : data yang akan disisipkan (elemen), pointer penunjuk dan pointer penunjuk sudah terdifinisi} {F.S. : menghasilkan satu simpul yang disisipkan di tengah pada single linked list} Kamus : baru,bantu : nama_pointer ketemu : boolean datasisip : tipedata Algoritma : If ( = nil) Then alloc(baru) baru.info ß elemen baru.next ß nil

Algoritma Penyisipan di Tengah (lanjutan) Else ß baru ß baru Input(datasisip) bantu ß ketemu ß false While (not ketemu and bantu nil) do If (datasisip = bantu.info) Then ketemu ß true Else bantu ß bantu.next EndIf EndWhile

Algoritma Penyisipan di Tengah (lanjutan) If (ketemu) Then alloc(baru) baru.info ß elemen If (bantu = ) Then sisip_belakang_single(elemen,,) Else baru.next ß bantu.next bantu.next ß baru EndIf Else Output( Data yang akan disisipkan tidak ada ); EndIf EndIf EndProcedure

Penghapusan di Depan Proses menghapus satu simpul di depan/di Linked List (menghapus simpul yang ditunjuk oleh pointer ) - Keadaan List memiliki satu simpul { = } 1

Penghapusan di Depan (lanjutan) phapus phapus ß 1 elemen elemen ß phapus.info ß nil phapus 1 ß nil dealloc(phapus) Jika terjadi penghapusan pada Linked List yang hanya memiliki satu simpul, maka Linked List akan kosong

Penghapusan di Depan (lanjutan) - Keadaan List memiliki lebih dari satu simpul { } Misalkan mula-mula Linked List memiliki dua simpul 2 3

Penghapusan di Depan (lanjutan) phapus 2 3 phapus ß elemen elemen ß phapus.info ß.next phapus 2 3 dealloc(phapus )

Penghapusan di Depan (lanjutan) Keadaan Linked List setelah terjadi penghapusan di depan/di (untuk ) : phapus 2 3

Algoritma Penghapusan di Depan Procedure HapusDepanSingle(Output elemen : tipedata, I/O, : nama_pointer) {I.S. : pointer penunjuk dan pointer penunjuk sudah terdifinisi} {F.S. : menghasilkan single linked list yang sudah dihapus satu simpul di depan} Kamus : phapus : nama_pointer Algoritma : phapus ß elemen ß baru.info If ( = ) Then ß nil ß nil Else ß.next EndIf dealloc(phapus) EndProcedure

Penghapusan di Belakang Proses menghapus satu simpul di belakang/di Linked List (menghapus simpul yang ditunjuk oleh pointer ) - Keadaan List memiliki satu simpul ( = ) {sama seperti penghapusan di depan} - Keadaan List memiliki lebih dari satu simpul { } Misalkan mula-mula Linked List memiliki tiga simpul 2 1 3

Penghapusan di Belakang (lanjutan) phapus 2 1 3 phapus ß phapus ß phapus.next 2 elemen elemen ß.info ß phapus phapus 1 3 phapus ß

Penghapusan di Belakang (lanjutan) phapus 2 1 3.next ß nil dealloc(phapus )

Penghapusan di Belakang (lanjutan) Keadaan Linked List setelah terjadi penghapusan di belakang/di (untuk ) : phapus phapus 2 1 3

Algoritma Penghapusan di Belakang Procedure HapusBelakangSingle(Output elemen : tipedata, I/O, : nama_pointer) {I.S. : pointer penunjuk dan pointer penunjuk sudah terdifinisi} {F.S. : menghasilkan single linked list yang sudah dihapus satu simpul di belakang} Kamus : phapus : nama_pointer Algoritma : phapus ß elemen ß baru.info If ( = ) Then ß nil ß nil

Algoritma Penghapusan di Belakang (lanjutan) Else while (phapus.next ) do phapus ß phapus.next endwhile ß phapus phapus ß phapus.next.next ß nil EndIf dealloc(phapus) EndProcedure

Penghapusan di Tengah Proses menghapus satu simpul di tengah Linked List (menghapus simpul yang ditunjuk oleh pointer phapus) - Keadaan List memiliki satu simpul ( = ) {sama seperti penghapusan di depan} - Keadaan List memiliki lebih dari satu simpul ( ) Misalkan mula-mula List memiliki empat simpul, dan akan menghapus simpul ketiga 3 4 2 5

Penghapusan di Tengah (lanjutan) Cari simpul yang akan dihapus (simpul ke-3). Pencarian dimulai dari simpul pertama. Jika ketemu simpul yang akan dihapus, maka simpan datanya kesebuah variabel (elemen). posisihapus=2 posisihapus=1 phapus posisihapus=3 phapus 3 4 2 5 elemen elemen ß phapus.info

Penghapusan di Tengah (lanjutan) Karena medan sambungan dari simpul sebelum simpul yang dihapus harus terhubung ke simpul berikutnya dari simpul yang dihapus, maka harus ada pointer bantuan (bantu) yang menunjuk simpul sebelum simpul yang dihapus. bantu posisihapus=3 phapus 3 4 2 5

Penghapusan di Tengah (lanjutan) Hubungkan medan sambungan dari simpul yang ditunjuk oleh pointer bantu ke simpul tetangganya phapus. Hapus simpul yang ditunjuk oleh pointer phapus bantu posisihapus=3 phapus 3 4 2 5 bantu.next ß phapus.next dealloc(phapus)

Penghapusan di Tengah (lanjutan) Keadaan Linked List setelah terjadi penghapusan di tengah(untuk ) : posisihapus=2 posisihapus=1 phapus bantu posisihapus=3 phapus 3 4 52 5

Traversal Proses mengunjungi setiap simpul satu persatu dari simpul pertama sampai simpul ter 3 4 2 5 Misalkan proses menampilkan data : Ø Tempatkan satu pointer bantuan (bantu) di simpul pertama bantu 3 4 2 5

Traversal (lanjutan) Ø Tampilkan ke layar medan data dari simpul yang ditunjuk oleh pointer bantu, kemudian pointer bantu bergerak ke simpul berikutnya sampai seluruh simpul tertelusuri (bantu = nil) bantu bantu bantu bantu 3 4 2 5 Tampilan Layar : 3 4 2 5

Tugas Buat algoritma dan program untuk menu berikut : Menu Utama 1. Isi Data 2. Tambah Data 3. Hapus Data 4. Tampil Data 5. Keluar Topik : 1. Penjualan Tiket, 2. Perpustakaan, 3. Pendaftaran Pasien, 4. Reservasi Hotel, 5. Laundry, 6. Rental Kendaraan, 7. Outlet, 8. Penyewaan VCD

Terima kasih