Algoritma dan Struktur Data Pertemuan 9 Circular Linked
- Slides: 17
Algoritma dan Struktur Data Pertemuan 9 Circular Linked List Page 1 1
Struktur Circular Linked List p. List A B C Ø Node (elemen) circular linked list saling berkait melalui pointer. Bagian next sebuah node menunjuk alamat node selanjutnya Ø p. List: pointer yang menunjuk salah satu node pada list Page 2 2
Struktur Circular Linked List p. List A B C Ø Node terakhir menunjuk node pertama Ø Setiap node terdiri atas § Isi data § Next, yaitu pointer ke node selanjutnya pada list Page 3 3
Struktur Sebuah Node struct node { //bagian data tipedata 1; tipedata 2; … tipedata n; //pointer ke node selanjutnya struct node *next; }; typedef struct node; Page 4 4
Deklarasi p. List Sebelum membuat circular linked list, perlu dideklarasikan diinisialisasikan p. List, yaitu pointer yang menunjuk salah satu node dari circular linked list node *p. List = NULL; Page 5 5
Operasi dasar linked list 1. 2. 3. 4. Menambah sebuah node. Menghapus sebuah node. Mencari sebuah node. List tranversal Page 6 6
Menambahkan node pada linked list Terdapat empat tahap untuk menambah node linked list: • Membuat node baru. • Mendapatkan node yang terletak sebelum node baru disisipkan (p. Pre) • Atur next node baru agar menunjuk node sesudah posisi penyisipan. Atur next p. Pre agar menunjuk node baru. • Nilai (p. Pre) dapat berisi : • it can contain the address of a node (i. e. you are adding somewhere after the first node – in the middle or at the end) • it can be NULL i. e. you are adding to an empty list Page 7 7
Menambahkan node ke list kosong Before: Code: p. New -> next = p. New; p. New 39 p. List = p. New; // point list to first node p. List p. Pre After: p. New 39 p. List p. Pre Page 8 8
Menambahkan node di tengah list Before: Code p. New -> next = p. Pre -> next; p. New 64 p. Pre -> next = p. New; 55 124 p. Pre After: p. New 64 55 124 p. Pre Page 9 9
Latihan : bagaimana menyisipkan node sebelum p. List? Before: Code ? p. New p. List 39 75 124 p. Pre After ? Page 10 10
Kode untuk menambah data ke linked list • Untuk menambah data pada linked list, harus diketahui p. List, pointer yang menunjuk node sebelum tempat penyisipan (p. Pre) dan data yang akan disisipkan (item). //insert a node into a linked list node *p. New; p. New = (node *) malloc(sizeof(node)); p. New -> data = item; if (p. Pre == NULL){ //add an empty list p. New -> next = p. New; p. List = p. New; } else { //add in the middle or at the end p. New -> next = p. Pre -> next; p. Pre -> next = p. New; } Page 11 11
Menghapus node dari linked list • Untuk menghapus sebuah node: – Cari node yang akan dihapus (p. Cur) dan node pendahulunya (p. Pre). – Ubah p. Pre->next agar menunjuk p. Cur->next. – Hapus p. Cur menggunakan fungsi free Page 12 12
Menghapus node pertama dari linked list Before: Code: p. Pre -> next = p. Cur->next; p. List = p. List->next; 75 124 free(p. Cur); p. List p. Pre p. Cur After: p. List p. Pre Recycled 124 p. Cur Page 13 13
Menghapus node dari linked list – kasus umum Before: Code: 75 96 p. Pre -> next = p. Cur -> next; 124 free(p. Cur); p. Cur p. Pre After: Recycled 75 p. Pre 124 p. Cur Page 14 14
Kode untuk menghapus node dari linked list • Untuk menghapus node dari linked list, harus diketahui p. List, node yang akan dihapus (p. Cur), serta pendahulunya (p. Pre) //delete a node from a linked list if (p. Pre == p. Cur) //list satu node p. List = NULL; else if (p. Cur == p. List) //menghapus node pertama p. Pre -> next = p. Cur -> next; p. List = p. List->next; Else p. Pre -> next = p. Cur -> next; free(p. Cur). Page 15 15
Mencari node yang mengandung data tertentu dari linked list • Operasi insert dan delete membutuhkan pencarian pada list untuk menentukan posisi penyisipan atau pointer yang menunjuk data yang akan dihapus //search the nodes in a linked list p. Pre = p. List; p. Cur = p. List; //search until the target value is found or the end of the list is reached Do while (p. Cur->next != p. List && p. Cur -> data != target) { p. Pre = p. Cur; p. Cur = p. Cur -> next; } //determine if the target is found or ran off the end of the list if (p. Cur->data == target) found = 1; else found = 0; Page 16 16
Traversing a Linked List • mengunjungi semua node yang ada pada list dari head sampai node terakhir //traverse a linked list node *p. Walker; p. Walker = p. List; printf(“List contains: n”); while (p. Walker->next != p. List){ printf(“%d ”, p. Walker -> data); p. Walker = p. Walker -> next; } printf(“%d ”, p. Walker -> data); Page 17 17
- Diketahui sebuah graph tak terarah memiliki 4 vertex
- Contoh array 3 dimensi
- Diketahui float a 5
- Single linked list adalah yang paling dari semua varian
- Data struktur dan algoritma
- Advantage of linked list
- Singly linked list vs doubly linked list
- Pertemuan di antara sumbu datar dan sumbu tegak dinamakan
- Sel adalah pertemuan antara titik-titik dan titik-titik
- Pertemuan permintaan barang dan jasa
- Circular single linked list adalah
- Double linked list circular
- Circular linked list advantages
- Circular linked list adalah
- Disadvantages of doubly linked list
- Directional lines in hair
- Struktur fisik adalah
- Tugas pertemuan 9 metode perancangan program