List akan disimpan dalam bagian memori komputer yang dinamakan HEAP

dokumen-dokumen yang mirip
KERUGIAN DAN KEUNTUNGAN LINKED LIST

BAB VII SENARAI BERANTAI (List)

BAB IX LINKED LIST (SENARAI BERANTAI)

BAB IX LINKED LIST (SENARAI BERANTAI)

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

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

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

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

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

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

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

Lab. Teknik Informatika Struktur Data 1

ALGORITMA & PEMROGRAMAN

Double Linked List. Brigida Arie Minartiningtyas, M.Kom

Linked List. Bandung 2013

STRUKTUR DATA single linked list non circular

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

SINGLE LINKED LIST (NON CIRCULAR)

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

KONSEP POINTER DAN LINKED LIST

BAB III QUEUE (ANTRIAN)

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

KONSEP POINTER DAN LINKED LIST

List Linear (Linked List) Farah Zakiyah Rahmanti 2014

KONSEP POINTER DAN LINKED LIST

KONSEP POINTER DAN LINKED LIST

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

2 SENARAI/LIST BERANTAI GANDA

KONSEP POINTER DAN LINKED LIST

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

MODUL 6 SINGLE & DOUBLE LINKED LIST

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

SENARAI BERANTAI (LINK LIST)

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

LAPORAN PRAKTIKUM IX. Oleh:

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

//membuat sebuah tipe data baru yang terdiri dari. //field data bertipe integer //field next merupakan pointer dari list

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

STRUKTUR DATA (2) Single Linked List

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

BAB I PENGENALAN STRUKTUR DATA

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

LOGO STRUKTUR DATA QUEUE

QUEUE (ANTRIAN) Struktur Data - Queue

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

Struktur Data II. Single Linked List - Non circular

Array VS Linked List

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

Single Linked List (1)

Struktur Data. Queue (Antrian)

BAB II STACK Atau TUMPUKAN

M Queue Berprioritas. Amin Arifiyani. Struktur Data M

BAB XI Manipulasi Binary Tree

Algoritma dan Struktur Data

STRUKTUR DATA. Literatur

Algoritma dan Struktur Data. Pertemuan 9 Circular Linked List

Tugas Studi Kasus. Linked List SLLNC dengan Head & Tail

PERTEMUAN KE 11. Linked List. Apa Itu Linked List?

BAB II Senarai Berantai (Linked List)

Double Linked List DIKTAT KULIAH. Pertemuan 6

Queue. Implementasi Queue dengan Array

4. STACK / TUMPUKAN TEORI PENUNJANG

LIST. Dewi Sartika, M.Kom

MODUL PRAKTIKUM STRUKTUR DATA

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

5. QUEUE (ANTRIAN) TUJUAN PRAKTIKUM

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

Algoritma dan Struktur Data. Pertemuan 7 Linked List

{ Program Pointer Pertama } { Program Pointer Single Linklist }

6. TREE / BINARY TREE

MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

LIST BERKAIT(LINKED LIST)

Searching [pencarian] Algoritma Pemrograman

Praktikum Algoritma dan Struktur Data

SATUAN ACARA PERKULIAHAN (SAP) Mata Kuliah : Struktur Data Kode : TIS3213 Semester : III Waktu : 1 x 3 x 50 Menit Pertemuan : 9

BAB II STACK (TUMPUKAN)

Pertemuan 3 RECORD. Contoh penggunaan record (dalam program PASCAL) : Type Siswa = record Nama : string[25]; Kelas : 1..6; Nilai : real; end;

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

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

Modul Praktikum Algoritma dan Struktur Data BAB 6 LINKED LIST

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

A. TUJUAN PEMBELAJARAN

QUEUE ( ANTREAN ) 4.1. PENGERTIAN QUEUE (ANTREAN)

Tutorial - Single Linked List

Pertemuan 4. Single Linked List non Circular Menggunakan Head dan Tail

Praktikum 3. Konsep double linked list Struktur double linked list Implementasi double linked list dalam Bahasa C

Linked List dan Implementasinya dalam Bahasa Java

Pointer. Pengertian. Struktur Data Pascal

Algoritma Pemrograman

IKG2A3/ Pemrograman Terstruktur 2

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

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

Review : Sifat Implementasi Linear List dengan Array

ALGORITMA DAN STRUKTUR DATA

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

STRUKTUR DATA Terttiaavini, S.Kom.,M.Kom PROGRAM STUDI SISTEM INFORMASI

A. TUJUAN PEMBELAJARAN

Algoritma Pemrograman & Struktur Data

Algoritma dan Struktur Data. Ramos Somya

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

Transkripsi:

pendahuluan Dikembangkan tahun 1955-1956 oleh Allen Newell, Cliff Shaw dan Herbert Simon di RAND Corporation sebagai struktur data utama untuk bahasa Information Processing Language (IPL). IPL dibuat untuk mengembangkan program artificial intelligence Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung dan dinamis.

List akan disimpan dalam bagian memori komputer yang dinamakan HEAP Field terakhir dalam setiap record sebagai tempat penyimpanan alamat memori (pointer) untuk record berikutnya yang terkait dalam List

Konsep Dasar List (Senarai) 1. Inisialisasi senarai (list) menjadi kosong 2. Periksa apakah senarai kosong atau tidak 3. Periksa apakah senarai penuh atau tidak 4. Mencari jumlah elemen (panjang) pada senarai 5. Ambil elemen ika tidak kosong 6. Masukkan/mengganti elemen jika senarai tidak kosong/penuh

HAL-HAL PENTING YANG HARUS DIKETAHUI MENGENAI LINK LIST 1. Linked List saling t erhubung dengan bantuan variabel POINTER 2. Pointer yang menunjuk pada awal dari list yang disebut HEAD. 3. Pointer yang menunjuk pada akhir dari list yang disebut TAIL, kecuali untuk jenis circular. 4. Masing-masing data dalam Linked List disebut dengan NODE (SIMPUL) 5. Setiap simpul yang terbentuk selalu memiliki nilai NIL, kecuali jika simpul tersebut sudah ditunjuk oleh simpul yang lainnya (Link list belum terhubung). 6. Posisi simpul terakhir pada link list selalu bernilai NIL karena tidak menunjuk pada simpul yang lainnya, kecuali bentuk circular.

Bab viii. Single linked list (Senarai bertantai tunggal)

DEFINISI Single Linked List (Senarai Berantai Tunggal) adalah linked list dimana semua simpul-simpulnya hanya memiliki 1 buah pointer (penunjuk) yang digunakan untuk mengkaitkan diri dengan simpul lain yang sejenis yang ada di sebelah kanannya di dalam sebuah senarai berantai yang sama. Kebanyakan orang menyingkat Single Linked List (Senarai Berantai Tunggal) hanya dengan sebutan Linked List (Senarai Berantai). Setiap simpul pada Senarai Berantai (Linked List) terdiri dari 2(dua) bagian yaitu : Info berisi informasi tentang elemen data yang bersangkutan. Next (link field/next pointer field), berisi alamat dari elemen (node) selanjutnya yang dituju.

Pointer awal menunjuk ke simpul pertama dari senerai tersebut. Pointer dari suatu simpul yang tidak menunjuk simpul lain disebut pointer kosong, yang nilainya dinyatakan sebagai NIL (nil adalah kata baku Pascal yang berarti bahwa pointer 0 atau bilangan negatif). Jadi hanya dengan sebuah pointer Awal saja maka kita bisa membaca semua informasi yang tersimpan dalam senerai.

Ada dua jenis Single Linked List : 1. Single Linked List (Non Circular) 2. Single Linked List Circular

SINGLE LINKED LIST Pengertian: Single : Linked List : artinya field pointer-nya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NIL artinya node-node tersebut saling terhubung satu sama lain.

SINGLE LINKED LIST CIRCULAR Single Linked List yang pointer nextnya menunjuk pada dirinya sendiri. Jika Single Linked List tersebut terdiri dari beberapa node, maka pointer next pada node terakhir akan menunjuk ke node terdepannya. Pengertian: Single : artinya field pointer-nya hanya satu buah saja dan satu arah. Circular : artinya pointer next-nya akan menunjuk pada dirinya sendiri sehingga berputar

Ilustrasi SINGLE LINKED LIST CIRCULAR Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, dan juga memiliki field yang berisi data. Pada akhir linked list, node terakhir akan menunjuk ke node terdepan sehingga linked list tersebut berputar. Node terakhir akan menunjuk lagi ke head.

Operasi Pada Linked List Ada tiga jenis operasi pada linked list, yaitu : 1. BUAT BARU 2. TAMBAH a. Menambah di belakang b. Menambah di depan c. Menambah di tengah 3. HAPUS a. Menghapus simpul pertama b. Menghapus simpul di tengah c. Menghapus simpul di akhir 4. CETAK/BACA : a. Membaca maju b. Membaca mundur

1. Menambah Simpul Untuk menjelaskan operasi ini baiklah kita gunakan deklarasi pointer dan simpul seperti di bawah ini Type simpul = ^ data; Data = reecord Info : char; Berikut:simpul; End; Var elemen : char; Awal, akhir, baru : simpul; Menambah simpul baru di belakang/akhir dari list. Penambahan di belakang maksudnya menambahkan simpul-simpul baru pada posisi Tail. Di bawah ini gambar ilustrasi penambahan simpul di belakang.

Untuk menyambung simpul yang ditunjuk oleh akhir dan Baru, pointer pada simpul yang ditunjuk oleh simpul akhir dibuat sama dengan baru kemudian pointer akhir dibuat sama dengan pointer baru. Dalam hal ini perlu pula ditest apakah senarai berantai masih kosong atau tidak. Senarai berantai yang masih kosong ditandai dengan nilai pointer Awal yang nilainya sama dengan NIL

Illustrasi Penambahan Simpul di Belakang a. Awal Baru A B C D F ^.Berikut := Baru ; b. Awal Baru A B C D F

c. := Baru ; ^.Berikut := nil Awal Baru A B C D F Procedure tambah_belakang (var Awal, akhir : simpul; elemen : char ); Var Baru : simpul ; Begin new(baru); baru^.info:=elemen; akhir^.berikut := baru; akhir:=baru; akhir^.berikut:= nil; End;

Menambah simpul baru di depan/awal Penambahan di depan maksudnya menambahkan simpul-simpul baru pada posisi Head. Di bawah ini gambar ilustrasi penambahan simpul di depan. Illustrasi Penambahan Simpul di Depan/Awal a. Baru Awal A B C D F

b. Baru^.Berikut := Awal ; Baru Awal A B C D F c. Awal:= Baru ; Baru Awal A B C D F

Procedure tambah_depan(var Awal, akhir : simpul; elemen : char ); Var Baru : simpul ; Begin new(baru);baru^.info := Elemen ; if Awal := nil then := Baru else Baru^.Berikut := Awal; Awal := Baru; End;

Menambah simpul baru ditengah. Pertama kali ditentukan di mana simpul baru akan ditambahkan pada posisi urutan simpul yang ke berapa. Hal ini dapat dilakukan dengan menempatkan simpul pointer bantu pada posisi tertentu. Kemudian pointer yang ditunjuk oleh pointer simpul baru dibuat sama dengan pada simpul yang ditunjuk oleh simpul bantu, selanjutnya pointer pada simpul yang ditunjnuk oleh simpul bantu, selalnjutnya pointer pada simpul yang ditunjuk pada simpul yang ditunjuk oleh simpul bantu dibuat sama dengan baru. Perhatikan bahwa urutan ini tidak boleh dibalik.

Illustrasi Penambahan Simpul di Tengah a. Awal Bantu A B D F Baru C Baru^.Berikut := Bantu^.Berikut; b. Awal Bantu A B D F Baru C

c. Bantu^.Berikut := Baru ; Awal Bantu A B D F Baru C

Procedure Tambah_Tengah (var awal,akhir:simpul ; elemen:char); Var bantu,baru:simpul; Begin new(baru); baru^.info :=elemen; if awal=nil then {senarai masih kosong} begin awal:= baru; akhir:= baru; end else begin {mencari posisi dimana elemen akan disisipkan} bantu := awal; while elemen > baru^.berikut^.info do bantu := bantu^.berikut; {menyisipkan simpul baru} baru^.berikut := bantu^.berikut; bantu^.berikut:= baru; end; {endif} End;

2. Menghapus Simpul Menghapus simpul pertama Untuk menghapus simpul pertama, maka pointer Bantu kita buat sama dengan pointer Awal. Kemudian pointer Awal kita pindah ke simpul yang ditunjjuk oleh pointer pada simpul yang ditunjuk oleh pointer Bantu kita dispose. Illustrasi Penghapusan Simpul di Pertama a. Bantu Awal A B C D

b. Awal:= Bantu^.Berikut; Bantu Awal A B C D c. Dispose(bantu); Awal B C D

procedure Hapus_Awal(var Awal, : Simpul; Elemen : char); var Hapus, Bantu : Simpul; begin if Awal = nil then { jika senarai masih kosong } writeln( Senarai masih kosong ) else if Awal^.Info = Elemen then { simpul pertama yang dihapus } begin Hapus := Awal; Awal := Hapus^.Berikut; Hapus^.Berikut := 0; dispose(hapus); end; end;

Menghapus simpul di tengah Untuk menghapus simpul tengah, letakkan pointer Bantu pada simpul di sebelah kiri simpul yang akan dihapus. Simpul yang akan dihapus kita tunjuk dengan pointer lain, misalnya Hapus. Kemudian pointer pada simpul yang ditunjuk oleh Bantu kita tunjukkan pada simpul yang ditunjuk oleh pointer pada simpul yang akan dihapus. Selanjutnya simpul yang ditunjuk oleh pointer Hapus kita Dispose. Illustrasi Penghapusan Simpul di tengah a. Bantu:=Awal^.Berikut; Hapus:=Bantu^.Berikut; Awal Bantu Hapus A B C D F

b. Bantu^.Berikut:=Hapus^.Berikut; Awal Bantu Hapus A B C D F c. Dispose(hapus); Awal Bantu A B D F

Procedure Hapus_Tengah begin Bantu := Awal; { mencari simpul yang akan dihapus } while (Elemen <> Bantu^.Info) and (Bantu^.Berikut <> nil) do Bantu := Bantu^.Berikut; Hapus := Bantu^.Berikut; if Hapus <> nil then { simpul yang akan dihapus ketemu }

Menghapus simpul di akhir Untuk menghapus simpul terakhir, tidak bisa dilakukan hanya dengan mendispose simpul akhir. Karena dengan disposenya simpul akhir, maka hanya simpul akhir saja yang dihapus, tetapi simpulnya masih tetap bisa dimasup, karena masih ditunjuk oleh pointer dari simpul di sebeah kirinya. Sehingga untuk bisa menghapus simpul terakhir, selain simpul akhir kita hapus, maka pointer dari sebelah kirinya juga harus dijadikan nil. Illustrasi Penghapusan Simpul di akhir a. Bantu:=Bantu^.Berikut; Awal Bantu A B C D F

b. :=Bantu; Awal Bantu A B C D F c. Bantu^.Berikut = nil; Awal Bantu A B C D F

Procedure Hapus_ begin if Hapus <> then { simpul di tengah dihapus } Bantu^.Berikut := Hapus^.Berikut; else { simpul terakhir dihapus } begin := Bantu; ^.Berikut := nil; end; Hapus^.Berikut := 0; dispose(hapus); end else { simpul yang aka dihapus tidak ketemu } writeln( Simpul yang akan dihapus tidak ketemu! ); end; end;