1 / 43

SINGLE LINKED LIST ( SLL )

SINGLE LINKED LIST ( SLL ). STRUKTUR DATA Teknik Informatika S1. MATERI :: TYPE DATA DINAMIS – SINGLE LINKED LIST. Array v s Linked List Alokasi Memori Single Linked List Non Circular (SLLNC). ARRAY VS LINKED LIST. Linked List.

pjimenez
Télécharger la présentation

SINGLE LINKED LIST ( SLL )

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. SINGLE LINKED LIST (SLL) STRUKTUR DATA TeknikInformatika S1

  2. MATERI :: TYPE DATA DINAMIS – SINGLE LINKED LIST Array vs Linked List AlokasiMemori Single Linked List Non Circular (SLLNC)

  3. ARRAY VS LINKED LIST

  4. Linked List • Linked List adalah salah satu bentuk struktur data, berisi kumpulan data (node) yang tersusun secara sekuensial, saling sambung-menyambung, dinamis dan terbatas. • Linked List sering disebut juga Senarai Berantai • Linked List saling terhubung dengan bantuan variabel pointer • Masing-masing data dalam Linked List disebut dengan node (simpul) yang menempati alokasi memori secara dinamis dan biasanya berupa struct yang terdiri dari beberapa field.

  5. Array VS Linked List

  6. VariabelStatis VS Dinamis (1) • VariabelStatis: • Tidakbisadihapusdandiubahukurannya • Variabel statis dapat diakses hanya dengan menggunakan namanya (bila ingin menunjuk pada suatu posisi dalam array dapat dilakukan dengan menggunakan indeks) • VariabelDinamis: • Variabel yang dibuat (dan mungkin juga dihapus) selama eksekusi progam. • Variabel dinamis belum nyata ada pada saat program dikompilasi • Satu-satunya cara untuk mengakses variabel dinamis adalah dengan menggunakan pointer • Memiliki suatu tipe tertentu seperti halnya variabel biasa.

  7. VariabelStatis VS Dinamis (2)

  8. ALOKASI MEMORI

  9. AlokasiMemori (1) • Variabel statis menempati bagian memori yang disebut datasegment, sehingga tidak bisa dihapus dari memori begitu program dieksekusi atau tidak bisa diubah ukuran elemennya jika variabel tersebut bertipearray. • Variabel statis menempati bagian memori yang disebut datasegment yang dibatasi ukurannya oleh compiler(maksimum 64 Kbyte).

  10. AlokasiMemori(2) • Variabeldinamis di dalam bagian memori yang disebut dengan heap. • Memori heapadalah memori yang masih tersedia setelah program dimuat kedalam memori dan alokasi memori untuk pendeklarasian variabel sudah dilakukan

  11. AlokasiMemori(3) • Program yang kemungkinan besar akan membutuhkan jenis, struktur dan ukuran data yang lebih beragam, harus menggunakan variabel dinamis. • Penggunaan variabel dinamis mutlak diperlukan untukmembuat program yang menggunakanstrukturdatadinamis (misalnya linked-list).

  12. Alokasi MemoriSecaraStatis int x; x 100 113

  13. Alokasi MemoriSecaraStatis int x; x=10; x 100 113

  14. Alokasi MemoriSecaraStatis int x; x=10; x 100 113

  15. Alokasi MemoriSecaraStatis int x; x=10; int a[3]; x 100 113

  16. Alokasi MemoriSecaraStatis int x; x=10; int a[3]; 101 a x 100 113

  17. Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101 a x 100 113

  18. Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 113

  19. Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 109 113

  20. Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 109 113

  21. Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101 a x 100 109 113

  22. Alokasi MemoriSecaraStatis int x; x=10; x 100 113

  23. Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 100 113

  24. Alokasi MemoriSecaraStatis int x; x=10; int a[5]; ? ? x 100 113

  25. Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 117 a 100 113

  26. Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 117 a 100 113

  27. AlokasiMemoriSecaraDinamis(1) FungsiMalloc • Mallocadalahfungsiuntukmengalokasikanmemory Contoh dari malloc() : int *x; x = (int*) malloc (3 * sizeof(int)); if(x==NULL) { printf(“Error di malloc\n”); exit(0); } else { printf(“Lakukan operasi memori dinamis”); }

  28. AlokasiMemoriSecaraDinamis(2) • AlokasimemoridibuattersendiridenganmenggunakanfungsiAlokasibertipe address untuk parameter data yang akandimasukkan address Alokasi(infotype X) { P = (address)malloc(sizeof(ElmtList)); if(P!=Nil) { Info(P) = X; Next(P) = Nil; } return (P); }

  29. AlokasiMemoriSecaraDinamis(2) • Penggunaanfungsi free() digunakanuntukmendealokasikanpenggunaan data padamemori void Dealokasi(address *P) { free(*P); }

  30. Single linked list non circular

  31. Bentuk Node Single Linked List non Circular(1) Pengertian: • Single : artinya field pointer-nya hanya satu buah saja dan satu arah serta pada akhir node, pointernya menunjuk NULL • Linked List : artinya node-node tersebut saling terhubung satu sama lain

  32. Bentuk Node Single Linked List non Circular(2) Pengertian: • Setiap node pada linked list mempunyai field yang berisi pointer ke node berikutnya, danjugamemiliki field yang berisi data. • Node terakhirakanmenunjukke NULL yang akandigunakansebagaikondisiberhentipadasaatpembacaanisi linked list.

  33. Bentuk Node Single Linked List non Circular(3) 100 102 8910

  34. Bentuk Node Single Linked List non Circular(4) 8 9 10 103 114 130 100 8910

  35. Bentuk Node Single Linked List non Circular(5) 8 114 9 130 10 0 103 114 130 100 8910 Linked list adalahstruktur data yang terdiridarirangkaian node - node

  36. Pembentukan Single Linked List non Circular(1) struct node { int data; node* next; }; Node Node Node 8 114 9 130 10 0 103 114 130

  37. Pembentukan Single Linked List non Circular(2) Contoh lain Deklarasi Node typedefstructTNode{ int data; TNode *next; }; Penjelasan: • PembuatanstructbernamaTNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dariTNode • Setelahpembuatanstruct, buatvariabel head yang bertipe pointer dariTNode yang bergunasebagaikepala linked list.

  38. SLLNC MENGGUNAKAN HEAD (1) • Dibutuhkansatubuahvariabel pointer: head • Head akanselalumenunjukpadanode pertama Deklarasi Pointer PenunjukKepala Single Linked List • Manipulasi linked list tidakbisadilakukanlangsungke node yang dituju, melainkanharusmenggunakansuatu pointer penunjukke node pertamadalam linked list (dalamhaliniadalah head). Deklarasinyasebagaiberikut: • TNode *head;

  39. SLLNC MENGGUNAKAN HEAD(2) FungsiInisialisasi Single LinkedList void init(){ head = NULL; } Function untukmengetahuikosongtidaknya Single LinkedList • Jika pointer head tidakmenunjukpadasuatu node makakosong intisEmpty(){ if(head == NULL) return 1; else return 0; }

  40. SLLNC MENGGUNAKAN FIRST • Kondisi List Kosongtergantungpadapenggunaanvariabel yang dideklarasikan (head/first). Contohilustrasi lain:

  41. SLLNC MENGGUNAKAN FIRST & LAST • Variasi lain dari Single Linked List denganPenunjuk Head, adalahpenggunaanpenunjuk Last. Untukmenunjuk node paling akhir

  42. Operasi-operasipada List Linier • Operasi-operasiDasar/Primitifyang bisadilakukan: • PenambahanDepan (insert first) • PenambahanBelakang (insert last) • PenambahanSetelah (insert after) • PenghapusanDepan (delete first) • PenghapusanBelakang (delete last) • PenghapusanSetelah (delete after) • Pencarian Data danAlamat • PencarianNilai Max dan Min • Pengurutan (Sorting ASC, DESC) • Invers (Pembalikan)

  43. TugasKelompok • Next Week Presentasioperasi-operasidasar Single Linked List denganpenunjuk First/Head Kelp 1: • Penambahan & PenghapusanDepan Kelp 2: • Penambahan & PenghapusanBelakang Kelp 3: • Penambahan & PenghapusanSetelah

More Related