Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010 Pertemuan 2 LINKED LIST Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
untaian atau rangkaian berantai dari node-node yang disusun dengan bantuan pointer. Masing-masing node merupakan suatu record yang berisi dua bagian, yaitu bagian informasi dan bagian pointer (yang berfungsi untuk menunjuk node berikutnya) Antara node yang satu dengan node berikutnya pada linked list tidak harus disimpan secara terurut dalam memory Linked List
Contoh linked list dengan 3 buah node Linked List (ii)
Linked List (iii) Pada C Deklarasi sebuah node dapat dilakukan dengan struct node{ int data; struct node *selanjutnya; } typedef struct node node; Linked List (iii)
Operasi Bentuk operasi pada linked list meliputi Penambahan data Penghapusan data Pengaksesan data (menampilkan 1 atau seluruh linked list, termasuk pencarian) Update data Seluruh operasi ini menjadi perhatian terkait dengan efisiensi dari aspek waktu eksekusi Operasi
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009 Penambahan Data Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009
Penambahan data (inserting) Operasi penambahan data baru pada linked list dapat memiliki 3 mode Di awal list Di antara data yang lain Di akhir list Penambahan data (inserting)
Penambahan Data di awal Node yang akan di masukan harus di alokasikan terlebih dahulu pada memory baru=malloc(sizeof node); Penambahan Data di awal
Penambahan Data di awal Ketika sebuah data (node) baru akan dimasukan pada linked list kondisi linked list bisa kosong ataupun sudah ada isinya Node pertama pada sebuah linked list pada umumnya ditunjuk oleh suatu pointer bantuan (head/awal) Kondisi kosong dapat dicek dengan kondisi awal=NULL Penambahan Data di awal
Penambahan Data di awal (ii) Pada kondisi kosong penambahan dapat dilakukan dengan cara menjadikan node baru tersebut sebagai node yang ditunjuk oleh awal. awal=baru; Pada saat sudah ada isinya penambahan memiliki beberapa tahapan: (1) kondisikan node setelah baru adalah node yang ditunjuk node awal diikuti dengan menjadikan (2) node awal menunjuk ke node baru Penambahan Data di awal (ii)
Penambahan Data di awal (iii) Ilustrasi penambahan di awal Penambahan Data di awal (iii)
Penambahan Data di awal (iv) Sintax dalam C (tentunya dengan inisalisasi terlebih dahulu) node* insertAwal(int dataBaru, node *awal){ node baru; baru=malloc(sizeof(node)); baru->data=dataBaru; if (awal==NULL){ awal=baru; awal->selanjutnya=NULL; } else { baru->selanjutnya=awal; return awal; Penambahan Data di awal (iv)
Penambahan Data di Antara Ilustrasi Penambahan di Antara Penambahan Data di Antara
Penambahan Data di Antara (ii) Tahapan Prosedur misalkan kita ingin menyisipkan Node baru (*NB) antara node ke 4 (*N4) dan ke 5 (*N5) NB->selanjutnya = N5 N4->selanjutnya=NB Bagaimana jika pointer bantuan hanya 1 N4 yang memegang node ke 4? NB->selanjutnya=N4->selanjutnya N4->selanjutnya=NB; Penambahan Data di Antara (ii)
Penambahan Data di Akhir Ilustrasi Penambahan di Akhir Selain di bagian awal pada bagian akhir list pada umumnya ditunjuk suatu pointer (tail/akhir) Penambahan Data di Akhir
Penambahan Data di Akhir Prosedur Pegang node terakhir katakan *Ak Langsung saja Ak->selanjutnya = NB Pastikan NB->selanjutnya=NULL Penambahan Data di Akhir
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009 Penghapusan Data Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009
Penghapusan Data Operasi penghapusan memiliki 3 mode Di awal list Di akhir list Data tertentu pada list Penghapusan Data
Penghapusan Data di Awal Ilustrasi (sintax -- free(hapus);) Penghapusan Data di Awal
Penghapusan Data tertentu Ilustrasi (penghapusan node dengan data=4) Penghapusan Data tertentu
Penghapusan Data tertentu(ii) Ilustrasi (lanjutan) Penghapusan Data tertentu(ii)
Penghapusan Data di Akhir Ilustrasi (sintax -- free(hapus);) Ada yang mau maju??? Penghapusan Data di Akhir
Pengaksesan & Update Data Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2009
Tidak semudah array yang dapat menggunakan index untuk menuju suatu data tertentu Suatu node pada linked list dengan pointer tunggal hanya memiliki info lokasi data (node) selanjutnya Penelusuran secara sekuensial (linier) dari awal sampai dengan posisi ataupun node (tujuan) dengan karakteristik data tertentu Kasus terbaik 1 (di awal), terburuk n (di akhir), kasus rata2 (n+1)n/2n Pengaksesan Data
Pada dasarnya update data akan diawali penelusuran data yang ingin diubah Ketika posisi data telah ditemukan secara langsung data terkait pada node dapat langsung diubah dengan data yang baru Update Data
Wassalamu’alaikum … Terima Kasih Departemen Ilmu Komputer FMIPA-IPB 2010