Senarai Berantai Adalah salah satu struktur data dinamis yang paling sederhana (linked list) atau juga disebut senarai satu arah ( one way list).
DEKLARASI VARIABEL PADA SENARAI BERANTAI : Type Simpul = ^Tali ; Tali = record Info : char; Berikut : Simpul end; Var elemen : char ; Awal, Akhir, Baru : Simpul;
A B C D E F Masing – masing komponen dinamakan dengan simpul (node). Setiap simpul dalam suatu senarai berantai terbagi menjadi dua bagian : Medan informasi berisi informasi yang disimpan dan diolah. Medan penyambung (linked field) berisi alamat simpul berikutnya. Awal A B C D E F Gambar contoh senarai berantai dengan 6 simpul
OPERASI PADA SENARAI BERANTAI MENAMBAH : Menambah di belakang Menambah di depan Menambah di tengah MENGHAPUS : Menghapus simpul pertama Menghapus simpul di tengah Menghapus simpul di akhir 3. MEMBACA : Membaca maju Membaca mundur 4. MENCARI DATA
A B C D F A B C D F Illustrasi Penambahan Simpul di Belakang a. Awal Akhir Baru A B C D F b. Akhir^.Berikut := Baru ; Awal Akhir Baru A B C D F
A B C D F c. Akhir:= Baru ; Akhir^.Berikut := nil Awal Akhir Baru Procedure tambah_belakang(var Awal, akhir : simpul; elemen : char ); Var Baru : simpul ; Begin new(baru); baru^.info:=elemen; akhir^.berikut := baru; akhir:=baru; akhir^.berikut:= nil; End;
Procedure tambah_belakang(var Awal, akhir : simpul; elemen : char ); Var Baru : simpul ; Begin new(Baru);Baru^.Info := Elemen ; if Awal := nil then Awal := Baru else Akhir^.Berikut := Baru ; Akhir := Baru; Akhir^.Berikut := nil ; End;
A B C D F A B C D F Illustrasi Penambahan Simpul di Awal a. Awal Baru Akhir A B C D F b. Baru^.Berikut := Awal ; Awal Baru Akhir A B C D F
A B C D F c. Awal:= Baru ; Baru Awal Akhir Procedure tambah_depan(var Awal, akhir : simpul; elemen : char ); Var Baru : simpul ; Begin new(Baru);Baru^.Info := Elemen ; if Awal := nil then Akhir := Baru else Baru^.Berikut := Awal; Awal := Baru; End;
A B D C A B D C F F Illustrasi Penambahan Simpul di Tengah Awal Bantu Akhir a. A B D F Baru C b. Baru^.Berikut := Bantu^.Berikut; Awal Bantu Akhir A B D F Baru C
b. Bantu^.Berikut := Baru ; Awal Bantu Akhir A B D F Baru C
Procedure tambah_depan(var Awal, akhir : simpul; elemen : char ); Var bantu,Baru : simpul ; Begin new(baru); baru^.info:=elemen; bantu:=awal; {mencari posisi dimana elemen akan disisipkan} while baru^.info>bantu^.berikut^.info do bantu:=bantu^.berikut; baru^.berikut:=bantu^.berikut; bantu^.berikut:=baru; end;
A B C D A B C D Illustrasi Penghapusan Simpul di Pertama a. Bantu Awal Akhir A B C D b. Awal:= Bantu^.Berikut; Bantu Awal Akhir A B C D
B C D A B C D F c. Dispose(bantu); Awal Akhir Illustrasi Penghapusan Simpul di tengah a. Bantu:=Awal^.Berikut; Hapus:=Bantu^.Berikut; Awal Bantu Hapus Akhir A B C D F
A B C D F A B D F b. Bantu^.Berikut:=Hapus^.Berikut; Awal Bantu Hapus Akhir A B C D F c. Dispose(hapus); Awal Bantu Akhir A B D F
A B C D F A B C D F Illustrasi Penghapusan Simpul di akhir a. Bantu:=Bantu^.Berikut; Awal Bantu Akhir A B C D F b. Akhir:=Bantu; Awal Bantu Akhir A B C D F
c. Bantu^.Berikut = nil; Awal Bantu Akhir A B C D F
A B C D F A B C D F Illustrasi Pembacaan Maju a. Bantu:=Bantu^.Berikut;Writeln(Bantu^.Info); Awal Bantu Akhir A B C D F Illustrasi Pembacaan Mundur a. Bantu:=Bantu^.Berikut; Awal Bantu Akhir A B C D F