Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
1
SINGLE LINKED LIST (SLL)
STRUKTUR DATA Teknik Informatika S1
2
MATERI :: TYPE DATA DINAMIS – SINGLE LINKED LIST
Array vs Linked List Alokasi Memori 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
Variabel Statis VS Dinamis (1)
Tidak bisa dihapus dan diubah ukurannya Variabel statis dapat diakses hanya dengan menggunakan namanya (bila ingin menunjuk pada suatu posisi dalam array dapat dilakukan dengan menggunakan indeks) Variabel Dinamis: 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
Variabel Statis VS Dinamis (2)
8
ALOKASI MEMORI
9
Alokasi Memori (1) Variabel statis menempati bagian memori yang disebut data segment, sehingga tidak bisa dihapus dari memori begitu program dieksekusi atau tidak bisa diubah ukuran elemennya jika variabel tersebut bertipe array. Variabel statis menempati bagian memori yang disebut data segment yang dibatasi ukurannya oleh compiler(maksimum 64 Kbyte).
10
Alokasi Memori (2) Variabel dinamis di dalam bagian memori yang disebut dengan heap. Memori heap adalah memori yang masih tersedia setelah program dimuat kedalam memori dan alokasi memori untuk pendeklarasian variabel sudah dilakukan
11
Alokasi Memori (3) Program yang kemungkinan besar akan membutuhkan jenis, struktur dan ukuran data yang lebih beragam, harus menggunakan variabel dinamis. Penggunaan variabel dinamis mutlak diperlukan untuk membuat program yang menggunakan struktur data dinamis (misalnya linked-list).
12
Alokasi Memori Secara Statis
int x; x 100 113
13
Alokasi Memori Secara Statis
int x; x=10; x 100 113
14
Alokasi Memori Secara Statis
int x; x=10; x 10 100 113
15
Alokasi Memori Secara Statis
int x; x=10; int a[3]; x 10 100 113
16
Alokasi Memori Secara Statis
int x; x=10; int a[3]; 101 a x 10 100 113
17
Alokasi Memori Secara Statis
int x; x=10; int a[3]; a[2]=8; 101 a x 10 100 113
18
Alokasi Memori Secara Statis
int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 10 100 113
19
Alokasi Memori Secara Statis
int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 10 100 109 113
20
Alokasi Memori Secara Statis
int x; x=10; int a[3]; a[2]=8; 101+(2x4) = 109 101 a x 8 10 100 109 113
21
Alokasi Memori Secara Statis
int x; x=10; int a[3]; a[2]=8; 101 a x 8 10 100 109 113
22
Alokasi Memori Secara Statis
int x; x=10; x 10 100 113
23
Alokasi Memori Secara Statis
int x; x=10; int a[5]; x 10 100 113
24
Alokasi Memori Secara Statis
int x; x=10; int a[5]; ? ? x 10 100 113
25
Alokasi Memori Secara Statis
int x; x=10; int a[5]; x 117 a 10 100 113
26
Alokasi Memori Secara Statis
int x; x=10; int a[5]; x 117 a 10 100 113
27
Alokasi Memori Secara Dinamis(1)
Fungsi Malloc Malloc adalah fungsi untuk mengalokasikan memory 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
Alokasi Memori Secara Dinamis(2)
Alokasi memori dibuat tersendiri dengan menggunakan fungsi Alokasi bertipe address untuk parameter data yang akan dimasukkan address Alokasi(infotype X) { P = (address)malloc(sizeof(ElmtList)); if(P!=Nil) { Info(P) = X; Next(P) = Nil; } return (P);
29
Alokasi Memori Secara Dinamis(2)
Penggunaan fungsi free() digunakan untuk mendealokasikan penggunaan data pada memori 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, dan juga memiliki field yang berisi data. Node terakhir akan menunjuk ke NULL yang akan digunakan sebagai kondisi berhenti pada saat pembacaan isi linked list.
33
Bentuk Node Single Linked List non Circular(3)
8 9 10 100 102
34
Bentuk Node Single Linked List non Circular(4)
8 9 10 8 9 10 100 103 114 130
35
Bentuk Node Single Linked List non Circular(5)
8 9 10 Linked list adalah struktur data yang terdiri dari rangkaian node - node 8 114 9 130 10 100 103 114 130
36
Pembentukan Single Linked List non Circular(1)
struct node { int data; node* next; }; Node Node Node 8 114 9 130 10 103 114 130
37
Pembentukan Single Linked List non Circular(2)
Contoh lain Deklarasi Node typedef struct TNode{ int data; TNode *next; }; Penjelasan: Pembuatan struct bernama TNode yang berisi 2 field, yaitu field data bertipe integer dan field next yang bertipe pointer dari TNode Setelah pembuatan struct, buat variabel head yang bertipe pointer dari TNode yang berguna sebagai kepala linked list.
38
SLLNC MENGGUNAKAN HEAD (1)
Dibutuhkan satu buah variabel pointer: head Head akan selalu menunjuk pada node pertama Deklarasi Pointer Penunjuk Kepala Single Linked List Manipulasi linked list tidak bisa dilakukan langsung ke node yang dituju, melainkan harus menggunakan suatu pointer penunjuk ke node pertama dalam linked list (dalam hal ini adalah head). Deklarasinya sebagai berikut: TNode *head;
39
SLLNC MENGGUNAKAN HEAD (2)
Fungsi Inisialisasi Single LinkedList void init(){ head = NULL; } Function untuk mengetahui kosong tidaknya Single LinkedList Jika pointer head tidak menunjuk pada suatu node maka kosong int isEmpty(){ if(head == NULL) return 1; else return 0;
40
SLLNC MENGGUNAKAN FIRST
Kondisi List Kosong tergantung pada penggunaan variabel yang dideklarasikan (head/first). Contoh ilustrasi lain:
41
SLLNC MENGGUNAKAN FIRST & LAST
Variasi lain dari Single Linked List dengan Penunjuk Head, adalah penggunaan penunjuk Last. Untuk menunjuk node paling akhir
42
Operasi-operasi pada List Linier
Operasi-operasi Dasar/Primitif yang bisa dilakukan: Penambahan Depan (insert first) Penambahan Belakang (insert last) Penambahan Setelah (insert after) Penghapusan Depan (delete first) Penghapusan Belakang (delete last) Penghapusan Setelah (delete after) Pencarian Data dan Alamat Pencarian Nilai Max dan Min Pengurutan (Sorting ASC, DESC) Invers (Pembalikan)
43
Tugas Kelompok Next Week Presentasi operasi-operasi dasar Single Linked List dengan penunjuk First/Head Kelp 1: Penambahan & Penghapusan Depan Kelp 2: Penambahan & Penghapusan Belakang Kelp 3: Penambahan & Penghapusan Setelah
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.