Upload presentasi
Presentasi sedang didownload. Silahkan tunggu
Diterbitkan olehMarkus Hadi Telah diubah "9 tahun yang lalu
1
SINGLE LINKED LIST (Lanjutan) Pertemuan 4 IMAM SIBRO MALISI
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. D A B C null FFF FFF FFF3 FFF4
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 head tail
2. Masuk data baru, misalny 5 head baru head
6
3. Datang data baru masalnya, 20
5 20 5 20 5
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
1. List masih kosong (head=tail=NULL) NULL head tail 2. masukan data baru, misalnya 5 head baru head 5
9
3. datang data baru,misalya 20
5 5 20 5 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 C D A B C D C D A B
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,
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 C D A B C D A B C
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
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 A B C D
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
Presentasi serupa
© 2024 SlidePlayer.info Inc.
All rights reserved.