Algoritma dan Struktur Data

Slides:



Advertisements
Presentasi serupa
Double Linked List.
Advertisements

Single linked list.
STRUKTUR DATA (7) single linked list circular
STRUKTUR DATA (8.1) double linked list non circular
LINKED LIST.
LINKED LIST.
CARA MEMBUAT SINGLE LINKED LIST DENGAN BORLAND C++
Mata Kuliah : Struktur Data Pertemuan : V
LINKED LIST Single Linked List.
LINKED LIST.
Linked List Pembuatan Simpul Awal.
Struktur Data Departemen Ilmu Komputer FMIPA-IPB 2010
Single Linked List.
STRUKTUR DATA (4) Array Stack(Tumpukkan) dan Queue (Antrian)
STRUKTUR DATA (6) single linked list non circular
Operasi pada pohon biner
Single Linked List Yuliana Setiowati, S.Kom.
BY YOHANA N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked- lis... 1 LINKED LIST.
Algoritma & Struktur Data Linked List Evangs Mailoa.
LINKED LIST by Yohana N.
Struktur Data List Linear : Linked List (Double Linkedlist)
Linear Data Structures (Linked List). Node Link atau pointer data field.
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Pertemuan ketujuh Struktur data st3telkom.ac.id
Tenia Wahyuningrum, S.Kom. MT
Struktur Data List Linear : Linked List (Single Linkedlist)
Pertemuan 13 Graph + Tree jual [Valdo] Lunatik Chubby Stylus.
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Struktur Data (Data Structure) – IS 2313
Algoritma dan Struktur Data
1 Pertemuan 3 Data Komposit Linked list Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Algoritma dan Struktur Data
LINK LIST “Suatu cara menyimpan data dengan terstruktur sehingga programmer dapat secara otomatis menciptakan suatu tempat baru didalam memori komputer.
Pertemuan Linked list jual [Valdo] Lunatik Chubby Stylus.
Pertemuan 9 Stack dengan Linked-list
1 Pertemuan 4 Doubly Linked List Matakuliah: T0026/Struktur Data Tahun: 2005 Versi: 1/1.
Binary Search Tree. Sebuah node di Binary Search Tree memiliki path yang unik dari root menurut aturan ordering – Sebuah Node, mempunyai subtree kiri.
Double linked list non circular
Struktur Data Linked List
STRUKTUR DATA (2) Single Linked List
STRUKTUR DATA Linked List
LINKED LIST by Yohana N.
Single Linked List.
Dynamic Array and Linked List
Matakuliah : T0534/Struktur Data Tahun : 2005 Versi : September 2005
Algoritma dan Struktur Data
Defri Kurniawan DOUBLE LINKED LIST Defri Kurniawan
Algoritma dan Struktur Data
11. Singly Circular Linked List
Pertemuan 24 Teknik Searching
Doubel Linked List.
Stack.
STRUKTUR DATA (7) single linked list circular
Doubel Linked List.
Algoritma dan Struktur Data
Single Linked List Circular (SLLC)
LINKED LIST GANDA Linked list ganda (doubly linked list) adalah linked list yang setiap simpul-nya (node) memiliki dua buah pointer, masing-masing berada.
LINKED LIST by Yohana N Sumber Kepustakaan : yohananugraheni.files.wordpress.com/.../linked-lis...
STRUKTUR DATA (8.2) double linked list circular
STRUKTUR DATA LINKED LIST
IT234 Algoritma dan Struktur Data
Linear Doubly INSERT KIRI
Linear Doubly INSERT TENGAH
Linear Doubly Linked List
Algoritma dan Struktur Data
IT234 Algoritma dan Struktur Data
SINGLE LINKED LIST (SLL)
Transcript presentasi:

Algoritma dan Struktur Data Pertemuan 8 Doubly Linked List

Struktur Doubly Linked List pHead A B C Node-node doubly linked list saling berkait melalui pointer. Bagian left sebuah node menunjuk node selanjutnya. Bagian right sebuah node menunjuk node sesudahnya. pHead : pointer yang menunjuk node pertama

Struktur Doubly Linked List pHead A B C Setiap node terdiri atas Left, yaitu pointer yang menunjuk ke node sebelumnya pada list Data Left node pertama bernilai NULL Right node terakhir bernilai NULL

Struktur Sebuah Node Doubly Linked List Setiap node terdiri atas Left, yaitu pointer yang menunjuk ke node sebelumnya pada list Data left data right

Struktur Sebuah Node Doubly Linked List struct node { //bagian data tipedata data 1; tipedata data 2; … tipedata data n; //pointer ke node sebelum dan sesudahnya struct node *left; struct node *right; }; typedef struct node node;

Deklarasi Head Sebelum membuat doubly linked list, perlu dideklarasikan dan diinisialisasikan pHead, yaitu pointer yang menunjuk node pertama dari double linked list node *pHead = NULL;

Operasi Doubly Linked List Menambah sebuah node pada doubly linked list. Menghapus sebuah node dari doubly linked list. Mencari node pada doubly linked list. List tranversal

Menambah Node Ke Doubly Linked List Tahap – tahap menambah node pada double linked list:  Buat node baru yang akan ditambahkan. Tentukan node sebelum tempat penyisipan (pCur). Set left node baru menunjuk predencecor dan right node baru menunjuk succesor. Set right predencecor dan left succesor menunjuk node baru .   pCur dapat memiliki dua keadaan: it can contain the address of a node (i.e. you are adding somewhere after the first node – in the middle or at the end) it can be NULL (i.e. you are adding either to an empty list or at the beginning of the list)

Menambah Node ke Doubly-Linked List Kosong Initial: Code: pNew = (node *) /*create node*/ malloc(sizeof(node)); pNew -> data = 39; pNew -> right = pHead; pNew -> left = pHead; pHead = pNew; After: pNew 39 pHead pCur pNew 39 pHead pCur

Menambah Node Di Tengah Doubly-Linked List Before: After: pNew 64 pCur 55 124 pNew 64 55 124 pCur

Menambah Node Di Tengah Doubly-Linked List pNew = (node *) malloc(sizeof(struct node)); pNew -> data = 64; pNew -> left = pCur; pNew -> right = pCur -> right; pCur -> right -> left = pNew; pCur -> right = pNew;  

Menambah Node Di Akhir Doubly Linked List Before: After: pNew 84 55 74 pCur pNew 84 55 74 pCur

Menambah Node Di Akhir Doubly Linked List pNew = (struct node *) malloc(sizeof(struct dllnode)); pNew -> data = 84; pNew -> left = pCur; pNew -> right = pCur -> right; pCur -> right = pNew;

Kode Untuk Menambah Node Ke Doubly-Linked List //insert a node into a linked list struct node *pNew; pNew = (struct node *) malloc(sizeof(struct node)); pNew -> data = item; if (pCur == NULL){ //add before first logical node or to an empty list pNew -> left = pHead; pNew -> right = pHead; pHead = pNew; } else { if (pCur -> right == NULL) { //add at the end pNew -> left = pCur; pNew -> right = pCur -> right; pCur -> right = pNew; else { //add in the middle pCur -> right -> left = pNew; pCur -> right = pNew;

Menghapus Node Dari Doubly Linked List Setiap node pada doubly linked list dapat dihapus. Jika doubly linked list tidak memiliki node lagi, maka pHead bernilai NULL . Untuk menghapus node baru : Cari node yang akan dihapus (pCur). Set right dari predencecor pCur agar menunjuk succesor pCur Set left dari succesor pCur agar menunjuk predencecor pCur Hapus node yang ditunjuk pCurmenggunakan free function.

Menghapus Node Pertama Doubly-Linked List Before: Code: pHead = pCur -> right; pCur ->right -> left = NULL; free(pCur); After: pHead 75 124 pCur pHead Recycled 124 pCur

Menghapus Node Pertama Doubly-Linked List Kasus umum Before: After: 75 23 46 124 77 pCur 23 Recycled 77 75 124 pCur

Kode Untuk Menghapus Sebuah Node Pada Doubly Linked List //delete a node from a linked list if (pCur -> left == NULL){ //deletion is on the first node of the list pHead = pCur -> right; pCur -> right -> left = NULL; { else { //deleting a node other than the first node of the list pCur -> left -> right = pCur -> right; pCur -> right -> left = pCur -> left; } free(pCur).

Pencarian Data Pada Doubly-Linked List Proses tambah node dan hapus node membutuhkan pencarian node tempat disisipkan dan yang akan dihapus. //search the nodes in a linked list pCur = pHead; //search until the target value is found or the end of the list is reached while (pCur != NULL && pCur -> data != target) { pCur = pCur -> right; } //determine if the target is found or ran off the end of the list if (pCur != NULL) found = 1; else found = 0;

List tranversal List tranversal mengunjungi seluruh node pada doubly linked list //traverse a linked list node *pWalker; pWalker = pHead; printf(“List contains:\n”); while (pWalker != NULL){ printf(“%d ”, pWalker -> data); pWalker = pWalker -> right; }

Tugas Modifikasilah pertemuan7.cpp menjadi doubly linked list Dipresentasikan oleh mahasiswa dengan nomor_urut_absen % 10 == 0 Dikumpulkan pada pertemuan 10