Title: Senarai Berantai Berkepala
1Senarai Berantai Berkepala Senarai berantai
Berputar
x2
x3
x5
x6
x1
x4
Kepala
2Senarai 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
3- Defenisi Struktur data
- Simpul data
- Data record
- info tipedata
- next Simpul
- end
Menambah Simpul Awal
Kepala
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
4Kepala
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 ltgt nil maka
Baru.next Kepala.next
Kepala.next baru
5New(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
6Menambah 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)
7Menambah Di Akhir
Procedure Tambah2(x tipedata) New(baru) Baru.in
fo X Baru.Next nil If awal nil Then
Awal baru Else Akhir awal While
akhir.next ltgt 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.nextltgt nil do akhir
akhir.next E-while Akhir.next baru
8Menambah Simpul Akhir
Procedure tambah2b(x tipedata) New(baru) Baru.
info x Baru.next nil Akhir kepala While
akhir.nextltgt nil do akhir
akhir.next E-while Akhir.next baru
Kepala
Baru
Baru
10
Baru
10
Baru
Kepala
akhir
10
9Kepala
N1 01 3.02 4
N2 02 2.09 4
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
N3 03 3.08 5
Simpul data Data record Nama
String NIM string IPK
Real sem integer Next
Simpul end
Nn xx I1 S
Nm xx I2 s
10Senarai Berantai Berputar
Kepala
New(kepala) Kepala.next Kepala
11x2
x3
x5
x6
x1
x4
Kepala
x1
x2
x1
Kepala
Kepala
12Menambah Simpul Awal
- Procedure tambah1(elemen tipedata)
- New (Baru)
- Baru.info elemen
- Baru.next Kepala.next
- Kepala.Next baru
Kepala
x1
Baru
13Menambah Simpul Awal
- Procedure tambah1(elemen tipedata)
- New (Baru)
- Baru.info elemen
- Baru.next Kepala.next
- Kepala.Next baru
Kepala
x1
Baru
14Menambah Simpul Awal
- Procedure tambah1(elemen tipedata)
- New (Baru)
- Baru.info elemen
- Baru.next Kepala.next
- Kepala.Next baru
Kepala
x1
Baru
15x1
New(Baru)
Kepala
Baru.info elemen
x2
Baru.Next Kepala.Next
Kepala.Next baru
baru
x2
x1
Kepala
16Menambah Di Akhir
Kepala
20
akhir
30
Kepala
Baru
30
20