4/9/0 Overview LIST BERKAIT(LINKED LIST) Pertemuan : -4 Dosen Pembina : Danang Junaedi Tujuan Instruksional Pendahuluan Pembentukan List Berkait Menampilkan Data pada List Berkait Studi Kasus Tugas Individu Program Studi Teknik Informatika Universitas Widyatama Tujuan Instruksional Pendahuluan () Mahasiswa akan dapat Menjelaskan pengertian dan manfaat list berkait Menjelaskan pengelolaan list berkait (Membentuk, Menampilkan data, Mencari dan Menghapus data) Mengimplementasikan pengelolaan list berkait (Membentuk, Menampilkan data, Mencari dan Menghapus data) 4 List atau disebut juga Pointer variabel yang berisi alamat memori sebagai nilainya. berisi alamat dari variabel yang mempunyai nilai tertentu. tidak secara langsung berisi suatu nilai tetapi berisi alamat memori dari nilai tersebut Cara pendeklarasian : Algoritma : <nama variabel list berkait/pointer> : ^Data C/C++: <tipe data> *<nama variabel list berkait/pointer> Jenis List/Pointer : List Tunggal (Single List) terdiri dari maksimum komponen yaitu komponen yang mencatat alamat dari suatu nilai
4/9/0 Pendahuluan () Pendahuluan () 6 Contoh List Tunggal (Single List) int I = ; I int *IPointer; IPointer IPointer = &I; IPointer I 00FED4 00FED6 00FED6 Alamat di memori I IPointer IPointer 00FED4 00FED4 I Pada umumnya suatu linked list memiliki sejumlah elemen, di mana salah satu elemen yang paling awal (elemen kepala atau head) bersifat agak khusus dan tidak digunakan untuk menyimpan data. List Berkait (Linked List) terdiri dari komponen utama yaitu komponen nilai/info dari list itu sendiri dan komponen yang mencatat alamat dari suatu nilai/list berikutnya. Gambar Elemen Dasar Sebuah Linked List Informasi Pointer Struktur ini terdiri atas rangkaian elemen yang saling berhubungan /berkaitan, dimana setiap elemen dihubungkan dengan elemen lainnya, oleh sebuah pointer. Jadi setiap elemen dalam linked list selalu berisi/mengandung pointer. Pointer adalah sebuah sel dalam suatu elemen yang berfungsi sebagai penunjuk letak elemen yang lain (nilainya merupakan alamat elemen yang lain). Pendahuluan (4) Pendahuluan () 7 8 Jenis List/Pointer (Lanjutan): Single Linked List Contoh Info Next_List NULL (kosong/list terakhir) Double Linked List Multiple Linked List Circular Linked List di bahas pada mata kuliah Struktur Data & Algoritma Lanjut NULL berarti komponen yang mencatat alamat list berikutnya bernilai kosong Gambar Contoh sebuah List yang Berisi Beberapa Elemen List Head Info Next Berikut ini diberikan contoh penulisan suatu struktur data list : Algoritma Type simpul= ^mylist mylist = record Info :char Next : simpul End C/C++ typedef struct{ Info : char; Next : simpul; } mylist ; Mylist *simpul;
4/9/0 Pembentukan List Berkait () Pembentukan List Berkait () 9 0 Pendeklarasian List struct <Nama List>{ <tipe data> <Nama Info>; <Nama List> *<Nama Pointer>; }; Contoh : a. Struct List{ int Info; List Next; Info }; Atau b. Struct Simpul{ int No_Urut; char Nama[]; float IPK; Simpul *Berikutnya; }; Next Nama Info Berisi Nilai dari List Nama Pointer Berisi Nilai dari List Berisi alamat dari list berikutnya No_Urut Nama IPK Berikutnya Berisi Nilai dari List Berisi alamat dari list berikutnya Berisi alamat dari list berikutnya Pembentukan List <Nama List > = new <Nama List> Contoh berdasarkan pendeklarasian di atas a. = new List //perintah untuk membuat list baru -> Info = atau cin>> -> info //Masukan data ke Info / Nilai yang di-input-kan b. Simpul Anyar = new Simpul //perintah untuk membuat Simpul baru Simpul Anyar -> No_Urut = 00 atau cin>> Simpul Anyar -> No_Urut Simpul Anyar -> Nama = Saya atau cin>> Simpul Anyar -> Nama Simpul Anyar -> IPK =.6 atau cin>> Simpul Anyar -> IPK 00 Saya.6 Operator untuk menunjukan posisi komponen yang sedang aktif/digunakan Algoritma : ^. C/C++ : -> Pembentukan List Berkait () Pembentukan List Berkait (4) Penambahan List ke dalam Elemen List List Kosong (/Head = NULL) / List Isi Tambah di /Head. =. =. -> Next = NULL. -> Next =. = List Isi (lanjutan) Tambah di. -> Next =. =. -> Next = NULL
4/9/0 Pembentukan List Berkait () Menampilkan Data pada List Berkait List Isi (lanjutan) Tambah di Tengah PSbl Pnow 4 /Head Pnow Arah Penelusuran/Pergeseran. Telusuri dari posisi awal sampai ditemukan posisi yang sesuai atau posisi paling akhir (NULL) & gunakan Psbl (Pointer sebelum) dan Pnow (Pointer saat ini) sebagai pointer bantu penelusuran Psbl = NULL ; Pnow = while (Pnow!= NULL && <Posisi belum Sesuai>) {Psbl = Pnow ;Pnow = Pnow -> Next}. Psbl =. -> Next = Pnow Telusuri dari posisi awal sampai ditemukan posisi paling akhir (NULL), Tampilkan & gunakan Pnow (Pointer saat ini) sebagai pointer bantu penelusuran Pnow = while (Pnow!= NULL) { cout << Pnow -> Info Pnow = Pnow -> Next } Studi Kasus I Pencarian Data pada List Berkait Buat Algoritma & Program (gunakan list berkait) untuk kasus di bawah ini (pilih salah satu) Data Nilai Mahasiswa Data Barang Data Penjualan Dimana data harus terurut secara Ascending berdasarkan aturan tertentu, kemudian tampilkan datanya 6 Pnow Secara garis besar, proses untuk mencari data yang terdapat pada suatu list hampir sama dengan proses membaca isi list, tetapi perlu ditambah dengan test untuk menentukan apakah data yang dicari ada pada seranai. Ada Kemungkinan Proses Pencarian a. Data Tidak Terurut Pnow = while (Pnow!= NULL && Cari_Data!= Pnow -> Info) {Pnow = Pnow -> Next} if (Pnow!= NULL) cout<< Data ditemukan else cout<< Data tidak ditemukan Arah Penelusuran/Pergeseran b. Data Terurut Pnow = while (Pnow!= NULL && Cari_Data > Pnow -> Info) { Pnow = Pnow -> Next} if (Pnow->info == Cari_Data) cout<< Data ditemukan else cout<< Data tidak ditemukan 4
4/9/0 Menghapus Data pada List Berkait () Menghapus Data pada List Berkait () 7 8 Dari hasil pencarian data di atas, kemungkinan proses penghapusan data pada List Berkait yaitu : List Kosong (/Head = NULL) printf( LIST KOSONG ); List Isi dan hanya tersisa data ( = ) List Isi dan tersisa > data Hapus di HapusNow. -> Next = NULL. =. HapusNow =. = HapusNow -> Next Menghapus Data pada List Berkait () Menghapus Data pada List Berkait (4) 9 List Isi dan tersisa > data (lanjutan) Hapus di Telusuri Sampai HapusNow->info == Data yang akan dihapus dan jika HapusNow ==, maka langkah penghapusannya adalah :. HapusSbl -> Next = NULL. = HapusSbl 0 List Isi dan tersisa > data (lanjutan) Hapus di Tengah HapusSbl HapusNow HapusSbl HapusNow Telusuri Sampai HapusNow->info == Data yang akan dihapus dan jika HapusNow!=, maka langkah penghapusannya adalah :. HapusSbl -> Next = HapusNow -> Next
4/9/0 Studi Kasus II Untuk bahan renungan bersama Lanjutkan Studi Kasus I dengan menambahkan fungsi-fungsi sebagai berikut: Data Nilai Mahasiswa (data terurut & tidak terurut) Mencari IPK tertinggi dan terendah kemudian tampilkan NIM-nya Menghitung IPK rata-rata Hapus Data Nilai Mahasiswa dengan IPK terendah Data Barang (data terurut & tidak terurut) Mencari Jumlah barang tertinggi dan terendah kemudian tampilkan kode barangnya Menghitung Jumlah Barang rata-rata Hapus Data Barang dengan jumlah barang terendah Data Penjualan (data terurut & tidak terurut) Mencari Jumlah Penjualan tertinggi dan terendah kemudian tampilkan kode sales dan kode barangnya Menghitung rata-rata penjualan Hapus Data Penjualan dengan jumlah penjualan terendah Siapakah orang yang rugi? Orang yang rugi adalah orang yang sudah sampai usia pertengahan namun masih berat untuk melakukan ibadat dan amal-amal kebaikan. Maka hargailah waktumu dan bersegeralah Siapakah orang yang paling cantik/tampan? Orang yang paling cantik/tampan adalah orang yang mempunyai akhlak yang baik. Maka peliharalah akhlakmu dari dosa dan noda Siapakah orang yang mempunyai rumah yang paling luas? Orang yang mempunyai rumah yang paling luas adalah orang yang mati membawa amal-amal kebaikan dimana kuburnya akan di perluaskan sejauh mata memandang. Maka beramal shalehlah selagi sempat dan mampu Siapakah orang yang mempunyai rumah yang sempit lagi dihimpit? Orang yang mempunyai rumah yang sempit adalah orang yang mati tidak membawa amalamal kebaikkan lalu kuburnya menghimpitnya. Maka ingatlah akan kematian dan kehidupan setelah dunia Siapakah orang yang mempunyai akal? Orang yang mempunyai akal adalah orang-orang yang menghuni syurga kelak, karena telah menggunakan akal sewaktu di dunia untuk menghindari siksa neraka. Maka peliharalah akal sehatmu dan pergunakan semaksimal mungkin untuk mengharap ridho-nya 6