Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Pertemuan 4. Single Linked List no n Circular Menggunakan Head dan Tail Dibutuhkan dua variabel pointer : head dan tail Head selalu menunjuk pada node.

Presentasi serupa


Presentasi berjudul: "Pertemuan 4. Single Linked List no n Circular Menggunakan Head dan Tail Dibutuhkan dua variabel pointer : head dan tail Head selalu menunjuk pada node."— Transcript presentasi:

1 Pertemuan 4

2 Single Linked List no n Circular Menggunakan Head dan Tail Dibutuhkan dua variabel pointer : head dan tail Head selalu menunjuk pada node pertama, sedangkan tail selalu menunjuk pada node terakhir. Kelebihan dari Single Linked List dengan Head & Tail adalah pada penambahan data di belakang, hanya dibutuhkan tail yang mengikat node baru saja tanpa harus menggunakan perulangan pointer bantu. A B C null D FFF1 FFF2 FFF3FFF4

3 Inisialisasi Linked List TNode *head, *tail; Fungsi Inisialisasi Linked List void init(){ head = NULL; tail = NULL; } Function untuk mengetahui kondisi LinkedList kosong / tidak int isEmpty(){ if(tail == NULL) return 1; else return 0; }

4 Menambah Node di Dep an Dengan Head dan Tail vo id i n sert D epa n( i nt d at ab aru ) { T Nod e *b aru ; b aru = n ew T No de ; b aru - >d at a = da t aba ru ; b aru - >n ext = NUL L; i f (i sE m pt y( ) = =1) { h ead =t a il =b aru ; t ai l - >n ext = NUL L; } el se { bar u- > ne xt = h ea d; hea d = b aru ; } p ri nt f ( ” Dat a ma suk \n ” ) ; }

5 1. List masih kosong (heah=tail NULL) NULL headtail 2. Masuk data baru, misalny 5 NULL head baruhead

6 3. Datang data baru masalnya,

7 Menambah Node di Belakang Dengan Head dan Tail v oi d t am bah Bel ak ang ( i nt da t aba ru ){ T No de * bar u, *b an t u; b aru = ne w TN od e; b aru - >d at a = d at ab aru ; b aru - >n ex t = NU LL ; i f ( i sE mp ty ( ) ==1 ) { h ead =b aru ; t ai l= b aru ; t ai l -> ne xt = NUL L; } e ls e { ta il - >n ex t = b aru ; ta il = bar u; } p ri n tf ( " Dat a ma su k\n “ ) ;

8 1. List masih kosong (head=tail=NULL) NULL head tail 2.masukan data baru, misalnya 5 NULL headbaruhead 5

9 datang data baru,misalya 20

10 Menghapus Node di Depan (Dengan Head dan Tail) Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan pointer hapus pada head, kemudian dilakukan pergeseran head ke node berikutnya sehingga data setelah head menjadi head baru, kemudian menghapus pointer hapus dengan menggunakan perintah delete. Jika tail masih NULL maka berarti list masih kosong!

11 voi d h apus Dep an( ) { T No de * hap u s; i n t d ; i f ( is E mpt y( ) = =0) { if ( h ead ! =t ai l ) { h apu s = he ad ; d = h ap us- > da t a; h ead = h ead - >n ext ; d ele t e h ap u s; } el se { d = t ai l - >d at a; h ead =t ai l= NUL L ; } pr in t f ( “ %d t erh ap us \n “, d) ; } e ls e p ri n tf ( " M asi h k oso n g\ n“ ) ; }

12 A B CB A D CD C BA D

13 Menghapus Node di Belakang (Den gan Head dan Tail Penghapusan node tidak boleh dilakukan jika keadaan node sedang ditunjuk oleh pointer, maka harus dilakukan penunjukkan terlebih dahulu dengan variabel hapus pada tail. Jika tail masih NULL maka berarti list masih kosong! Dibutuhkan pointer bantu untuk membantu pergeseran dari head ke node berikutnya sampai sebelum tail, sehingga tail dapat ditunjukkan ke bantu, dan bantu tersebut akan menjadi tail yang baru. Setelah itu hapus pointer hapus dengan menggunakan perintah delete.

14 v oi d h a pus B e la k a ng( ) { TN od e *ba nt u, *ha pus ; in t d; if (i s Em pt y ( ) ==0 ) { ba n tu = he a d; i f( he a d! =t a il ) { w hil e (b an tu - >ne x t! =t a il ) { b an tu = ba nt u- >ne x t ; } h ap us = t ai l; t a il =ba nt u; d = ha pus - >da t a ; d el e t e ha pu s ; t a il - >ne x t = NU L L; }e l s e { d = ta i l- >da t a ; h ea d =ta i l=N U LL ; } c ou t<< d<<" t e rha pus \ n"; } e l s e c ou t< <"M as i h k o so ng\ n"; }

15 A B CB A D CD CAB

16 Function untuk menghapus semu a elemen LinkedList dengan HEAD & TAIL v o id clear ( ) { TNo de *bantu,* hapus ; bantu = head; whil e( bantu! = NULL ) { hapus = bant u; bantu = bantu- > next ; delete hapus ; } head = NULL; tail = NULL ; }

17 Latihan Soal I Struktur Data (Pertemuan 4) 1. Kelebihan dari Single Linked List dengan Head & Tail adalah : a. Penambahan data dibelakang b. Penambahan data didepan c. Penghapusan data dibelakang d. Penghapusan data didepan 2. Head dan Tail menunjuk pada node …. a. Head menunjuk node pertama, tail menunjuk node terakhir b. Head menunjuk node terakhir, tail menunjuk node pertama c. Head menunjuk node pertama, tail menunjuk node pertama d. Head menunjuk node terakhir, tail menunjuk node terakhir

18 3. Jika Tail = Null, maka kondisi Linked List adalah : a. Penuh c. Tidak dapat ditambah b. Kosong d. Baru 4. Gambar diatas menunjukkan bentuk penambahan node pada posisi : a. Belakang c. Tengah b. Depan d. Depan dan Belakang B ACD

19 5. Perintah yang tepat untuk menyatakan Linked list berada dalam kondisi kosong, adalah …. a. head=tail c. bantu=head b. head=tail=null d. bantu=tail

20 Latihan II Soal Struktur Data (Review Materi Pertemuan 3 & Pertemuan 4) Buatlah Ilustrasi / Penggambaran untuk menambah dan menghapus node di posisi tengah pada : 1. Single Linked List dengan Head 2. Single Linked List dengan Head & Trail

21 SEKIAN Hati-hati menyeberang Jangan sampai titian patah Hati-hati di rantau orang Jangan sampai berbuat salah


Download ppt "Pertemuan 4. Single Linked List no n Circular Menggunakan Head dan Tail Dibutuhkan dua variabel pointer : head dan tail Head selalu menunjuk pada node."

Presentasi serupa


Iklan oleh Google