Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

SINGLE LINKED LIST (SLL)

Presentasi serupa


Presentasi berjudul: "SINGLE LINKED LIST (SLL)"— Transcript presentasi:

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


Download ppt "SINGLE LINKED LIST (SLL)"

Presentasi serupa


Iklan oleh Google