Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

8. Singly Linear Linked List

Presentasi serupa


Presentasi berjudul: "8. Singly Linear Linked List"— Transcript presentasi:

1 8. Singly Linear Linked List
Data Structure + Algorithm = Program UNIV. INDONUSA Esa Unggul

2 UNIV. INDONUSA Esa Unggul
Apakah Linked List? Linked list merupakan sekumpulan item di mana masing-masing item adalah bagian dari suatu node yang juga mengandung suatu link ke suatu node . Visualisasi sebuah node: item link UNIV. INDONUSA Esa Unggul

3 Apakah Linked List? (Lanjutan)
Dibandingkan dengan array, sebuah linked list memiliki keuntungan berupa kemampuan untuk mengatur-ulang item-item secara efisien. Let’s make our hands dirty! UNIV. INDONUSA Esa Unggul

4 UNIV. INDONUSA Esa Unggul
Data Structure Di bawah ini diberikan struktur untuk suatu singly linear linked list: struct node{ int data; // item node* next; // a link }; UNIV. INDONUSA Esa Unggul

5 Data Structure (Lanjutan)
class linklist{ private: node* head; public: linklist(){ head = NULL; } // operasi pada linked list }; UNIV. INDONUSA Esa Unggul

6 Data Structure (Lanjutan)
Di sini, struct node menyatakan sebuah node, sedangkan link itu sendiri yang menunjuk ke suatu node diimplementasikan sebagai pointer ke node (node*). Visualisasi: head NULL UNIV. INDONUSA Esa Unggul

7 Operasi pada Linked List
Terdapat beberapa operasi utama pada struktur ini, diantaranya yaitu: menambahkan node, mencari suatu node dengan nilai item tertentu, menghapus node, mengubah nilai item suatu node, memindahkan suatu node, dan mengurutkan node berdasarkan nilai item. Semua node di dalam suatu list dapat dikunjungi dengan mengetahui pointer yang menunjuk ke node pertama (head). UNIV. INDONUSA Esa Unggul

8 Operasi pada Linked List (Lanjutan)
Sebagai contoh di sini akan diberikan kode lengkap untuk menambahkan suatu item sebagai head dan menampilkan semua item suatu list: #include <iostream> using namespace std; struct node{ int data; node* next; } UNIV. INDONUSA Esa Unggul

9 Operasi pada Linked List (Lanjutan)
class linklist{ private: node* head; public: linklist(){ head = NULL; } void additem(int d); void display(); }; UNIV. INDONUSA Esa Unggul

10 Operasi pada Linked List (Lanjutan)
void linklist::additem(int d){ node* newlink = new node; newlink->data = d; newlink->next = head; head = newlink; } void linklist::display(){ node* current = head; while(current!=NULL){ cout << current->data << endl; current = current->next; UNIV. INDONUSA Esa Unggul

11 Operasi pada Linked List (Lanjutan)
int main(){ linklist li; li.additem(1456); li.additem(5); li.additem(9); li.additem(19); li.additem(71); li.display(); return 0; } UNIV. INDONUSA Esa Unggul

12 UNIV. INDONUSA Esa Unggul
Penjelasan Pernyataan linklist li; menginstansiasi objek dengan nama li, dan memanggil konstruktor: linklist(){ head = NULL; } UNIV. INDONUSA Esa Unggul

13 Penjelasan (lanjutan)
, sehingga pada saat itu list adalah kosong: Penyataan: li.additem(1456); akan menambahkan sebuah node dengan nilai item 1456 ke dalam list tersebut: head NULL UNIV. INDONUSA Esa Unggul

14 Penjelasan (lanjutan)
node* newlink = new node; Ekspresi new node akan meminta alokasi memori sebesar node. Kemudian alamat dari memori yang dialokasikan tersebut disimpan ke dalam variabel bertipe pointer-to-node yang bernama newlink. UNIV. INDONUSA Esa Unggul

15 Penjelasan (lanjutan)
Misal alamat tersebut FFFF0001: newlink = FFFF0001 newlink node FFFF0001 newlink FFFF0001 node UNIV. INDONUSA Esa Unggul

16 Penjelasan (lanjutan)
newlink->data = d; Mengisi nilai item dengan d, yaitu 1456, newlink 1456 UNIV. INDONUSA Esa Unggul

17 Penjelasan (lanjutan)
newlink->next = head; Mengisi nilai next dari node yang ditunjuk oleh newlink dengan nilai head, yaitu NULL: newlink 1456 NULL UNIV. INDONUSA Esa Unggul

18 Penjelasan (lanjutan)
head = newlink; Akan membuat head bernilai FFFF0001 atau dengan kata lain menunjuk ke node yang ditunjuk oleh newlink: head 1456 NULL UNIV. INDONUSA Esa Unggul

19 UNIV. INDONUSA Esa Unggul
Delete Jika ptr adalah sebuah pointer-to-node maka pernyataan delete ptr; Akan menghapus/mendealokasikan node yang ditunjuk oleh ptr tersebut. UNIV. INDONUSA Esa Unggul

20 UNIV. INDONUSA Esa Unggul
Hi Einstein! Buat algoritma (member fungsi) untuk menghapus sebuah node. Buat algoritma untuk memindahkan item terbesar pada sebuah list menjadi node terbelakang pada list tersebut. Buat algoritma untuk memindahkan item terkecil pada sebuah list menjadi node terdepan pada list tersebut. UNIV. INDONUSA Esa Unggul


Download ppt "8. Singly Linear Linked List"

Presentasi serupa


Iklan oleh Google