160 likes | 473 Views
Senarai Berantai Berkepala & Senarai berantai Berputar. x2. x3. x5. x6. x1. x4. Kepala. Senarai Berantai Berkepala.
E N D
Senarai Berantai Berkepala & Senarai berantai Berputar x2 x3 x5 x6 x1 x4 Kepala
Senarai Berantai Berkepala • Proses penghapusan simpul sering mengalami masalah terutama penghapusan simpul akhir yang mana penghapusan hanya boleh dilakukan jika jumlah simpul dalam senarai lebih dari satu, hal ini tidak efisien jika harus dilakukan penghapusan semua simpul dengan penghapusan dimulai dari simpul yang paling akhir dimana ketika senarai hanya memiliki satu simpul harus mengganti metode penghapusan. • Untuk mengatasi hal tersebut dapat dibuat senarai berantai berkepala yaitu menambahkan sebuah simpul yang biasaya tidak memiliki informasi atau nilai, namun demikian tidak tertutup kemungkinan digunakan untuk kepentingan lain misalnya mencatatkan jumlah simpul yang ada dalam senarai ataupun informasi lain, tapi secara pasti tidak menyimpan informasi yang sama dengan informasi yang ada pada simpul lainnya
Menambah Simpul Awal Kepala Defenisi Struktur data Simpul = ^data Data = record info : tipedata next : Simpul end Baru New(Baru) Baru Baru^.info = x 10 Membentuk simpul Kepala New(Kepala) Kepala^.next = nil Baru 10 Baru^.next = nil Kepala Kepala^.next = baru Kepala Baru 10
Kepala 10 New(baru) Baru^.info = x If kepala^.next = nil Then Baru^.next = nil kepala^.next = baru Else Baru^.next = kepala^.next Kepala^.next = baru fi Baru 20 Jika kepala^.next <> nil maka Baru^.next = Kepala^.next Kepala^.next= baru
New(baru) Baru^.info = x If kepala^.next = nil Then Baru^.next = nil kepala^.next = baru Else Baru^.next = kepala^.next Kepala^.next = baru fi New(baru) Baru^.info = x Baru^.next = kepala^.next Kepala^.next = baru fi
Menambah Simpul tengah & akhir Menambah Simpul di akhir pada senarai berantai berkepala, pada prinsipnya sama dengan penambahan simpul pada senarai berantai yang sudah dibahas sebelumnya, tetapi penelusuran dilakukan dengan menempatkan akhir = kepala, dengan demikian tidak perlu dilakukan pengecekan apakah list masih kosong atau tidak, Dan untuk penambahan simpul tengah adalah sama, tetapi penelusuran bantu dilakukan mulai dari kepala (bantu = kepala)
Menambah Di Akhir Procedure Tambah2(x : tipedata) New(baru) Baru^.info = X Baru^.Next = nil If awal = nil Then Awal = baru Else Akhir = awal While akhir^.next <> nil Do Akhir = Akhir^.next e-while akhir^.next = baru fi Procedure tambah2b(x : tipedata); New(baru) Baru^.info = x Baru^.next = nil Akhir = kepala While akhir^.next<> nil do akhir = akhir^.next E-while Akhir^.next = baru
Menambah Simpul Akhir Procedure tambah2b(x : tipedata); New(baru) Baru^.info = x Baru^.next = nil Akhir = kepala While akhir^.next<> nil do akhir = akhir^.next E-while Akhir^.next = baru Kepala Baru Baru 10 Baru 10 Baru Kepala akhir 10
Kepala Buat Algoritma untuk mencari IPK Terbesar Buat algoritma Untuk mencari ipk rata-rata Buta algoritma untuk menghapus simpul-simpul yang dimulai dari simpul paling akhir Simpul = ^data Data = record Nama : String; NIM : string IPK : Real sem : integer Next : Simpul end
Senarai Berantai Berputar Kepala New(kepala) Kepala^.next = Kepala
x2 x3 x5 x6 x1 x4 Kepala x1 x2 x1 Kepala Kepala
Menambah Simpul Awal Procedure tambah1(elemen : tipedata) New (Baru) Baru^.info = elemen Baru^.next = Kepala^.next Kepala^.Next = baru Kepala x1 Baru
Menambah Simpul Awal Procedure tambah1(elemen : tipedata) New (Baru) Baru^.info = elemen Baru^.next = Kepala^.next Kepala^.Next = baru Kepala x1 Baru
Menambah Simpul Awal Procedure tambah1(elemen : tipedata) New (Baru) Baru^.info = elemen Baru^.next = Kepala^.next Kepala^.Next = baru Kepala x1 Baru
x1 New(Baru) Kepala Baru^.info = elemen x2 Baru^.Next = Kepala^.Next Kepala^.Next= baru baru x1 x2 Kepala
Menambah Di Akhir Kepala 20 akhir 30 Kepala Baru 30 20