460 likes | 498 Views
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.
E N D
SINGLE LINKED LIST (SLL) STRUKTUR DATA TeknikInformatika S1
MATERI :: TYPE DATA DINAMIS – SINGLE LINKED LIST Array vs Linked List AlokasiMemori Single Linked List Non Circular (SLLNC)
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.
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.
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).
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
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).
Alokasi MemoriSecaraStatis int x; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; 101 a x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101 a x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 109 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 100 109 113
Alokasi MemoriSecaraStatis int x; x=10; int a[3]; a[2]=8; 101 a x 100 109 113
Alokasi MemoriSecaraStatis int x; x=10; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[5]; ? ? x 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 117 a 100 113
Alokasi MemoriSecaraStatis int x; x=10; int a[5]; x 117 a 100 113
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”); }
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); }
AlokasiMemoriSecaraDinamis(2) • Penggunaanfungsi free() digunakanuntukmendealokasikanpenggunaan data padamemori void Dealokasi(address *P) { free(*P); }
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
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.
Bentuk Node Single Linked List non Circular(3) 100 102 8910
Bentuk Node Single Linked List non Circular(4) 8 9 10 103 114 130 100 8910
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
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
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.
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;
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; }
SLLNC MENGGUNAKAN FIRST • Kondisi List Kosongtergantungpadapenggunaanvariabel yang dideklarasikan (head/first). Contohilustrasi lain:
SLLNC MENGGUNAKAN FIRST & LAST • Variasi lain dari Single Linked List denganPenunjuk Head, adalahpenggunaanpenunjuk Last. Untukmenunjuk node paling akhir
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)
TugasKelompok • Next Week Presentasioperasi-operasidasar Single Linked List denganpenunjuk First/Head Kelp 1: • Penambahan & PenghapusanDepan Kelp 2: • Penambahan & PenghapusanBelakang Kelp 3: • Penambahan & PenghapusanSetelah