Struktur Data Materi II LINKED LIST SENARAI BERKAIT
Struktur Data Materi II LINKED LIST / SENARAI BERKAIT v List: Koleksi dari obyek-obyek homogen dengan sifat setiap elemen, kecuali yang terakhir pasti memiliki penerus dan setiap elemen, kecuali yang pertama pasti memiliki pendahulu. v Setiap elemen list (node) terdiri dari dua komponen yaitu Info dan Next. Elemen list (Node) INFO NEXT INFO : Berfungsi untuk menyimpan data yang harus disimpan. NEXT : Berfungsi untuk menyimpan alamat elemen berikutnya. Suatu list linier dikenali : v Alamat elemen pertama (First / Awal) v Alamat elemen berikut (Next / Berikut) v Setiap elemen list memiliki alamat, jika tidak ada disebut NULL.
Struktur Data Materi II v Contoh List yang Terdiri dari 3 Elemen: v Contoh List Kosong Awal Atau Info Next Null v Elemen pertama tidak memiliki pendahulu (predesor) oleh sebab itu alamat elemen pertama digambarkan dengan anak panah dari kotak yang namanya awal. v Elemen terakhir tidak memiliki penerus (suksesor) oleh sebab itu field Next nya di-Null-kan. v Setiap elemen menyimpan alamat elemen penerusnya sehingga elemen list saling berkait, maka list seperti ini disebut dengan Linked List.
Struktur Data Materi II OPERASI-OPERASI PADA LINKED LIST 1. Buat Linked List Mendefinisikan / mendeklarasikan linked list kosong 2. Cek Linked List Mengecek apakah List dalam kedaan kosong atau tidak ? 3. Sisip Node Pada Linked List Menambah / menyisipkan node baru berisi info baru pada linked list. 4. Hapus Node Pada Linked List Menghapus node pada linked list yang sesuai dengan info yang dihapus. 5. Telusuri Linked List / Cetak Elemen Linked List(List) Menelusuri / mencetak semua node pada linked list.
Struktur Data Materi II 1. MEMBUAT LINKED LIST v Untuk membuat sebuah linked list Integer pertama-tama adalah mendefinisikan elemen linked list biasa disebut node. v Sebuah node memiliki tipe pointer dengan komponen Info dan Next. Tipe data Info dapat berupa apa saja bahkan dapat berupa record, sedangkan Next harus memiliki tipe data pointer karena digunakan untuk merekam alamat elemen linked list berikutnya. Node INFO Pointer NEXT ALAMAT Pointer v Misalkan akan dibuat sebuah linked list standar, dimana infonya digunakan untuk merekam data bilangan bulat atau integer pada bahasa C, caranya: Typedef int tipeinfo; typedef struct node *tipeptr; typedef struct node{tipeinfo; tipeptr next; };
Struktur Data Materi II v Mendefinisikan kondisi awal linked list, masih dalam keadaan kosong. void buatlistbaru() { awal=NULL; akhir=NULL; } Awal Akhir
Struktur Data Materi II 2. MENYISIPKAN NODE PADA LINKED LIST v Proses menyisipkan node pada linked terjadi pada tiga tempat masing- masing di depan, tengah dan belakang. a. Sisip Node di Depan 20 NB 30 40 Awal 50 Akhir Sisipnode(10) 10 Hasil : 10 Awal 20 30 40 50 Akhir
Struktur Data 2. MENYISIPKAN NODE PADA LINKED LIST v Fungsi Menyisipkan Node di Depan (bahasa C). void sisipdepan(tipeinfo IB) { tipeptr NB; NB=(node *)malloc(sizeof(node)); NB->info=IB; NB->next=awal; awal=NB; akhir=NB; } Materi II
Struktur Data Materi II b. Sisip Node di Tengah Bantu 10 Bantu 20 30 40 Awal 50 Akhir Sisipnode(35) 35 NB Hasil : 10 Awal 20 30 35 40 50 Akhir
Struktur Data 2. MENYISIPKAN NODE PADA LINKED LIST v Fungsi Menyisipkan Node di Tengah (bahasa C). void sisiptengah(tipeinfo IB) { tipeptr NB, bantu; NB=(node *) malloc(sizeof(node)); NB->info=IB; NB->next=NULL; bantu=awal; while(bantu->next->info<IB) bantu=bantu->next; NB->next=bantu->next; bantu->next=NB; } Materi II
Struktur Data Materi II c. Sisip Node di Akhir 10 20 30 40 50 Awal Akhir NB Sisipnode(60) 60 Hasil : 10 Awal 20 30 40 50 60 Akhir
Struktur Data 2. MENYISIPKAN NODE PADA LINKED LIST v Fungsi Menyisipkan Node di Belakang (bahasa C). void sisipbelakang(tipeinfo IB) { tipeptr NB; NB=(node *) malloc(sizeof(node)); NB->info=IB; NB->next=NULL; akhir->next=NB; akhir=NB; } Materi II
Struktur Data Materi II 3. MENCETAK ISI LINKED LIST v Proses mencetak isi linked list dengan cara menelusuri seluruh node pada linked list. Ada dua cara untuk mencetak yaitu mencetak dari depan ke belakang dan dari belakang ke depan. a. Cetak Dari Depan Bantu 10 20 Awal Hasil : 10 20 30 40 50 60 Akhir
Struktur Data Materi II 3. MENCETAK ISI LINKED LIST v Fungsi Mencetak dari Depan (bahasa C). void cetaklist() { tipeptr bantu; bantu=awal; while (bantu!=NULL) { printf("%d ", bantu->info); bantu=bantu->next; } }
Struktur Data Materi II 3. MENCETAK ISI LINKED LIST b. Cetak Dari Belakang • Proses mencetak isi linked list dari belakang ke depan dilakukan melalui dua tahap yaitu dengan membalik pointer kemudian mencetak normal. Contoh: 10 20 30 40 50 Awal 1. Akhir Balikkan arah pointer, sehingga menjadi: 60 50 40 30 Awal 2. 60 Cetak secara normal, dari depan ke belakang. 20 10 Akhir
Struktur Data Materi II 3. MENCETAK ISI LINKED LIST v Proses Membalik Pointer Ekor 10 20 30 40 50 Awal Bantu 60 Akhir v Putar arah linked list 60 50 40 30 20 Awal 10 Akhir v Sederhanakan 60 Awal 50 40 30 20 10 Akhir
Struktur Data Materi II 3. MENCETAK ISI LINKED LIST v Fungsi Mencetak dari Belakang (bahasa C). void cetakterbalik() { tipeptr ekor, bantu; ekor=awal; awal=akhir; do { bantu=ekor; while(bantu->next!=akhir) bantu=bantu->next; akhir->next=bantu; akhir=bantu; } while(akhir!=ekor); akhir->next=NULL; bantu=awal; while(bantu!=NULL) { printf("%d ", bantu->info); bantu=bantu->next; } }
Struktur Data Materi II 4. MENGHAPUS NODE PADA LINKED LIST v Proses menghapus node pada linked list terjadi pada tiga tempat, yaitu masing-masing di depan, tengah dan belakang. a. Hapus Node di Depan Hapus 10 20 30 40 50 Awal Akhir Hapusnode(10) Hasil : 20 Awal 60 30 40 50 60 Akhir
Struktur Data Materi II b. Hapus Node di Tengah Bantu 10 Hapus Bantu 20 30 40 50 Awal Akhir Hapusnode(40) Hasil : 10 Awal 60 20 30 50 60 Akhir
Struktur Data Materi II c. Hapus Node di Akhir Hapus Bantu 10 20 30 40 50 Awal Akhir Hapusnode(60) Hasil : 10 Awal 60 20 30 40 50 Akhir
Struktur Data Materi II v Tugas Buat sebuah linked list dimana infonya berfungsi untuk menyimpan data nilai mahasiswa berupa nomor mahasiswa, nama, kelas dan nilai. Tipe data dan lebar field tentukan sendiri!.
- Slides: 20