SENARAI BERANTAI (LINKED LIST) Fajrizal
Senarai / list adalah : Kumpulan linear sejumlah data Atau ; Kumpulan komponen yg disusun secara berurutan dengan bantuan pointer. Masing-masing komponen dinamakan dengan simpul (node). Setiap simpul dalam senarai berantai terbagi menjadi dua, * bagian pertama disebut medan informasi * bagian kedua disebut medan penyambung ( linked list)
Contoh senarai berantai dengan 6 simpul : Awal A B C D E F Medan penyambung dari simpul kedua Medan informasi dari simpul kedua
PENYAJIAN SENARAI BERANTAI INFO SAMBUNGAN 1 C 5 A 6 D 10 B 1 F E 8 2 Awal 3 2 4 5 6 7 8 Habis 9 10
NAMA NOMOR ANGK SEX SAMBUNGAN 1 Toni Subagio 12345 84/85 L 9 Budiman 6745 86/87 6 Purwanto 7001 85/86 Bambang 12123 83/84 11 Estiyati 6501 P 13 Amir 12211 5 Widodo 12111 Danang 12432 1 Jati 7201 4 2 3 TEK 4 7 5 6 EKON 7 2 8 9 10 11 12 13 14
OPERASI PADA SENARAI BERANTAI 1. Menambah Simpul Menggunakan Deklarasi Pointer type simpul = ^Data; Data = record info : string; Berikut : Simpul; end; var Elemen : string; Awal, Akhir, Baru : Simpul;
a. Menambah di belakang Akhir Baru Awal A B C D F Akhir Baru Awal B C D F A Akhir Baru Awal A B C D F
Procedure untuk menambah simpul di belakang : procedure TAMBAH_BELAKANG ( var awal, akhir : simpul; elemen : string); var baru : simpul ; begin new (baru); baru^.info := elemen ; if awal = nil then senarai masih kosong awal := baru else akhir^.berikut := baru ; akhir := baru; akhir^.berikut := nil end;
b. Menambah di depan Akhir Baru Awal B C D F A Akhir Baru Awal F A B C D Akhir Baru Awal A B C D F
Procedure untuk menambah simpul di depan : procedure TAMBAH_DEPAN ( var awal, akhir : simpul; elemen : string); var baru : simpul ; begin new (baru); baru^.info := elemen ; if awal = nil then senarai masih kosong akhir := baru else baru^.berikut := awal ; awal := baru; end;
c. Menambah di tengah Akhir Awal Bantu A B D F Baru C Akhir Awal Bantu A B D F Baru C Akhir Awal Bantu A B D F Baru C
Procedure untuk menambah simpul di tengah : procedure TAMBAH_TENGAH ( var awal, akhir : simpul; elemen : char); var baru, bantu : simpul ; begin new (baru); baru^.info := elemen ; if awal = nil then senarai masih kosong awal := baru; akhir := baru end else begin { mencari lokasi yg sesuai } bantu := awal; while elemen > baru^.berikut^.info do bantu := bantu^.berikut; { menyisipkan simpul baru} baru^.berikut := bantu^.berikut ; bantu^.berikut := baru; end;
2. Menghapus Simpul a. Menghapus simpul pertama Akhir Awal Bantu B C D E A Akhir Bantu Awal E A B C D Akhir Awal B C D E
b. Menghapus simpul di tengah / terakhir Awal Bantu Hapus Akhir B C D E A Akhir Awal Bantu Hapus E A B C D Akhir Awal A B D E