Defri Kurniawan defri.kurniawan@dsn.dinus.ac.id VARIASI LIST Defri Kurniawan defri.kurniawan@dsn.dinus.ac.id
RENCANA KEGIATAN PERKULIAHAN SEMESTER W Pokok Bahasan 1 ADT Stack 2 ADT Queue 3 List Linear 4 5 6 Representasi Fisik List Linear 7 Variasi List Linear 8 Ujian Tengah Semester W Pokok Bahasan 9 Variasi List Linear 10 11 Stack dengan Representasi List 12 Queue dengan Representasi List 13 List Rekursif 14 Pohon dan Pohon Biner 15 Multi List 16 Ujian Akhir Semester
Circular List
List Linier
List Sirkuler Jika L adalah sebuah list, dan P adalah alamat elemen list, maka ciri dari list dengan representasi ini adalah : Elemen pertama : First(L)= P, dengan P adlah address salah satu elemen list Elemen terakhir : Last(L)= P, Next(P)= First List kosong : First(L) = Nil
Circular List List dengan representasi sirkuler sebenarnya tidak mempunyai “First”. First adalah “Current Pointer”. Representasi ini dipakai jika dilakukan proses terus menerus terhadap anggota list Penambahan dan penghapusan pada elemen pertama akan berakibat harus melakukan traversal untuk mengubah Next dari elemen Last.
Circular List Circular list dapat ditempatkan dimana saja pada heap memory Node – node pada linked list terhubung menggunakan field next, dan node terakhir mengarah / menuju ke node pertama
Circular List 3 9 7 5
Double Linked List
Double Linked List Memiliki dua buah pointer yaitu Pointer Prev dan Pointer Next Pointer Prev mengarah ke node sebelumnya Pointer Next mengarah ke node setelahnya null Data Pointer Next Prev null
Double Linked List Setiap node pada linked list memiliki data dan pointer Inisialisasi, pointer prev dan pointer next mengarah ke NULL Selanjutnya, pointer prev mengarah ke node sebelumnya dan pointer next mengarah ke node setelahnya null 4 7 9
Double Linked List 1. Double Linked List dengan penunjuk First
Double Linked List 2. Double Linked List dengan menyertakan Last
Beberapa Catatan Dibutuhkan jika harus dilakukan banyak operasi terhadap elemen suksesor dan juga predesesor Operasi dasar menjadi sangat “banyak” Memori yang dibutuhkan membesar
Double Linked List Deklarasi Double Linked List Ciri: memiliki alamat prev dan next
Double Linked List Pendefinisian list kosong pada double linked list dengan menyertakan Last
Pengecekan List Kosong dengan Last boolean ListEmpty(List L) { return ((First(L)==Nil) && (Last(L)==Nil)); }
Pembuatan List void CreateList(List *L) { First(*L) = Nil; Last(*L) = Nil; }
Fungsi Alokasi address Alokasi(infotype X) { address P; P = (address)malloc(sizeof(ElmtList)); if(P!=Nil) { Info(P) = X; Next(P) = Nil; Prev(P) = Nil; }
Fungsi Dealokasi void Dealokasi(address *P) { free(*P); }